Inter-app API cleanup for Grades
This commit is contained in:
97
lms/djangoapps/grades/rest_api/serializers.py
Normal file
97
lms/djangoapps/grades/rest_api/serializers.py
Normal file
@@ -0,0 +1,97 @@
|
||||
"""
|
||||
API Serializers
|
||||
"""
|
||||
from collections import defaultdict
|
||||
|
||||
from rest_framework import serializers
|
||||
|
||||
|
||||
# pylint: disable=abstract-method
|
||||
class GradingPolicySerializer(serializers.Serializer):
|
||||
"""
|
||||
Serializer for course grading policy.
|
||||
"""
|
||||
assignment_type = serializers.CharField(source='type')
|
||||
count = serializers.IntegerField(source='min_count')
|
||||
dropped = serializers.IntegerField(source='drop_count')
|
||||
weight = serializers.FloatField()
|
||||
|
||||
def to_representation(self, instance):
|
||||
"""
|
||||
Return a representation of the grading policy.
|
||||
"""
|
||||
# Backwards compatibility with the behavior of DRF v2.
|
||||
# When the grader dictionary was missing keys, DRF v2 would default to None;
|
||||
# DRF v3 unhelpfully raises an exception.
|
||||
return dict(
|
||||
super(GradingPolicySerializer, self).to_representation(
|
||||
defaultdict(lambda: None, instance)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
class SectionBreakdownSerializer(serializers.Serializer):
|
||||
"""
|
||||
Serializer for the `section_breakdown` portion of a gradebook entry.
|
||||
"""
|
||||
attempted = serializers.BooleanField()
|
||||
category = serializers.CharField()
|
||||
label = serializers.CharField()
|
||||
module_id = serializers.CharField()
|
||||
percent = serializers.FloatField()
|
||||
score_earned = serializers.FloatField()
|
||||
score_possible = serializers.FloatField()
|
||||
subsection_name = serializers.CharField()
|
||||
|
||||
|
||||
class StudentGradebookEntrySerializer(serializers.Serializer):
|
||||
"""
|
||||
Serializer for student gradebook entry.
|
||||
"""
|
||||
user_id = serializers.IntegerField()
|
||||
username = serializers.CharField()
|
||||
percent = serializers.FloatField()
|
||||
section_breakdown = SectionBreakdownSerializer(many=True)
|
||||
|
||||
|
||||
class SubsectionGradeOverrideSerializer(serializers.Serializer):
|
||||
"""
|
||||
Serializer for subsection grade override.
|
||||
"""
|
||||
earned_all_override = serializers.FloatField()
|
||||
possible_all_override = serializers.FloatField()
|
||||
earned_graded_override = serializers.FloatField()
|
||||
possible_graded_override = serializers.FloatField()
|
||||
|
||||
|
||||
class SubsectionGradeSerializer(serializers.Serializer):
|
||||
"""
|
||||
Serializer for subsection grade.
|
||||
"""
|
||||
earned_all = serializers.FloatField()
|
||||
possible_all = serializers.FloatField()
|
||||
earned_graded = serializers.FloatField()
|
||||
possible_graded = serializers.FloatField()
|
||||
|
||||
|
||||
class SubsectionGradeOverrideHistorySerializer(serializers.Serializer):
|
||||
"""
|
||||
Serializer for subsection grade override history.
|
||||
"""
|
||||
user = serializers.CharField()
|
||||
comments = serializers.CharField()
|
||||
created = serializers.DateTimeField()
|
||||
feature = serializers.CharField()
|
||||
action = serializers.CharField()
|
||||
|
||||
|
||||
class SubsectionGradeResponseSerializer(serializers.Serializer):
|
||||
"""
|
||||
Serializer for subsection grade response.
|
||||
"""
|
||||
subsection_id = serializers.CharField()
|
||||
user_id = serializers.IntegerField()
|
||||
course_id = serializers.CharField()
|
||||
original_grade = SubsectionGradeSerializer()
|
||||
override = SubsectionGradeOverrideSerializer()
|
||||
history = SubsectionGradeOverrideHistorySerializer(many=True)
|
||||
Reference in New Issue
Block a user