Initial commit
This commit is contained in:
94
content/serializers.py
Normal file
94
content/serializers.py
Normal file
@@ -0,0 +1,94 @@
|
||||
from rest_framework import serializers
|
||||
|
||||
from .models import Choice, Grade, Lesson, Question
|
||||
|
||||
|
||||
# ---- Grades ----
|
||||
|
||||
class GradeSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
model = Grade
|
||||
fields = ['id', 'title', 'icon', 'color']
|
||||
|
||||
|
||||
class GradesListResponseSerializer(serializers.Serializer):
|
||||
grades = GradeSerializer(many=True)
|
||||
|
||||
|
||||
# ---- Home (skill map + stats) ----
|
||||
|
||||
class NodeStatusSerializer(serializers.Serializer):
|
||||
id = serializers.CharField()
|
||||
title = serializers.CharField()
|
||||
status = serializers.ChoiceField(choices=['locked', 'unlocked', 'completed'])
|
||||
|
||||
|
||||
class UnitWithNodesSerializer(serializers.Serializer):
|
||||
id = serializers.CharField()
|
||||
title = serializers.CharField()
|
||||
nodes = NodeStatusSerializer(many=True)
|
||||
|
||||
|
||||
class StatsSerializer(serializers.Serializer):
|
||||
progressPercent = serializers.FloatField()
|
||||
xp = serializers.IntegerField()
|
||||
coins = serializers.IntegerField()
|
||||
|
||||
|
||||
class HomeResponseSerializer(serializers.Serializer):
|
||||
units = UnitWithNodesSerializer(many=True)
|
||||
stats = StatsSerializer()
|
||||
|
||||
|
||||
# ---- Lesson intro ----
|
||||
|
||||
class LessonIntroResponseSerializer(serializers.Serializer):
|
||||
lessonId = serializers.CharField()
|
||||
title = serializers.CharField()
|
||||
introText = serializers.CharField()
|
||||
mascotAnimation = serializers.CharField()
|
||||
|
||||
|
||||
# ---- Lesson questions ----
|
||||
|
||||
class ChoiceOptionSerializer(serializers.Serializer):
|
||||
id = serializers.CharField()
|
||||
value = serializers.CharField()
|
||||
|
||||
|
||||
class QuestionSerializer(serializers.Serializer):
|
||||
id = serializers.CharField()
|
||||
type = serializers.CharField()
|
||||
prompt = serializers.CharField()
|
||||
options = ChoiceOptionSerializer(many=True)
|
||||
|
||||
|
||||
class LessonQuestionsResponseSerializer(serializers.Serializer):
|
||||
questions = QuestionSerializer(many=True)
|
||||
|
||||
|
||||
# ---- Answer submission ----
|
||||
|
||||
class AnswerRequestSerializer(serializers.Serializer):
|
||||
selectedOptionId = serializers.IntegerField()
|
||||
|
||||
|
||||
class AnswerResponseSerializer(serializers.Serializer):
|
||||
correct = serializers.BooleanField()
|
||||
correctOptionId = serializers.CharField()
|
||||
xpEarned = serializers.IntegerField()
|
||||
heartsRemaining = serializers.IntegerField()
|
||||
|
||||
|
||||
# ---- Lesson completion ----
|
||||
|
||||
class LessonCompleteRequestSerializer(serializers.Serializer):
|
||||
correctCount = serializers.IntegerField()
|
||||
totalQuestions = serializers.IntegerField()
|
||||
|
||||
|
||||
class LessonCompleteResponseSerializer(serializers.Serializer):
|
||||
stars = serializers.IntegerField()
|
||||
xpEarned = serializers.IntegerField()
|
||||
coinsEarned = serializers.IntegerField()
|
||||
stats = StatsSerializer()
|
||||
Reference in New Issue
Block a user