Skip to content
Snippets Groups Projects

Feedback update frontend

Merged robinwilliam.hundt requested to merge feedback-update-frontend into master
31 files
+ 752
223
Compare changes
  • Side-by-side
  • Inline
Files
31
  • 54941e9b
    Changed jwt auth endpoints
    
    `/api-token-auth/` to `/api/get-token/`
    `/api-token-refresh/` to `/api/refresh-token/`
    
    Added student list page
    
    Added submission serializer for student list view
    
    Bare student list view is now implemented for the reviewer
    He is able to view a searchable and sortable list of all students in the left pane of the window and their submissions on the right side
    
    Fixed /?#/ bug on login page
    
    Added `feedback_created`/`feedback_validated` counts to TutorSerializer
    
    Added basic tutor overview
    
    Added student overview help card
    
    When going to the student overview page, a help card is shown on the right side which is replaced when viewing a submission
@@ -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.GeneralTaskSubscription.FEEDBACK_CREATION # noqa
).count()
def get_feedback_validated(self, obj):
return self._get_completed_assignments(obj).filter(
subscription__feedback_stage=models.GeneralTaskSubscription.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