Skip to content
Snippets Groups Projects

Feedback update frontend

Merged robinwilliam.hundt requested to merge feedback-update-frontend into master
45 files
+ 1066
376
Compare changes
  • Side-by-side
  • Inline
Files
45
@@ -2,7 +2,7 @@ import logging
from rest_framework import serializers
from core.models import ExamType, SubmissionType, Test, UserAccount
from core import models
from util.factories import GradyUserFactory
from .generic import DynamicFieldsModelSerializer
@@ -14,7 +14,7 @@ user_factory = GradyUserFactory()
class ExamSerializer(DynamicFieldsModelSerializer):
class Meta:
model = ExamType
model = models.ExamType
fields = ('pk', 'module_reference', 'total_score',
'pass_score', 'pass_only',)
@@ -22,33 +22,50 @@ class ExamSerializer(DynamicFieldsModelSerializer):
class TestSerializer(DynamicFieldsModelSerializer):
class Meta:
model = Test
model = models.Test
fields = ('pk', 'name', 'label', 'annotation')
class SubmissionTypeListSerializer(DynamicFieldsModelSerializer):
class Meta:
model = SubmissionType
model = models.SubmissionType
fields = ('pk', 'name', 'full_score')
class SubmissionTypeSerializer(SubmissionTypeListSerializer):
class Meta:
model = SubmissionType
model = models.SubmissionType
fields = ('pk', 'name', 'full_score', 'description', 'solution')
class TutorSerializer(DynamicFieldsModelSerializer):
done_assignments_count = serializers.IntegerField(
read_only=True)
def create(self, validated_data) -> UserAccount:
feedback_created = serializers.SerializerMethodField()
feedback_validated = serializers.SerializerMethodField()
@staticmethod
def _get_completed_assignments(obj):
return models.TutorSubmissionAssignment.objects.filter(
is_done=True,
subscription__owner=obj,
)
def get_feedback_created(self, obj):
return self._get_completed_assignments(obj).filter(
subscription__feedback_stage=models.SubmissionSubscription.FEEDBACK_CREATION # noqa
).count()
def get_feedback_validated(self, obj):
return self._get_completed_assignments(obj).filter(
subscription__feedback_stage=models.SubmissionSubscription.FEEDBACK_VALIDATION # noqa
).count()
def create(self, validated_data) -> models.UserAccount:
log.info("Crating tutor from data %s", validated_data)
return user_factory.make_tutor(
username=validated_data['username'])
class Meta:
model = UserAccount
fields = ('pk', 'username', 'done_assignments_count')
model = models.UserAccount
fields = ('pk', 'username', 'feedback_created', 'feedback_validated')
Loading