From 91940ab711f3d5e2c823717432c5ea3c9016edcd Mon Sep 17 00:00:00 2001 From: Daniel Egger Date: Thu, 23 May 2024 09:55:02 +0200 Subject: [PATCH] Cleanup --- server/vbv_lernwelt/assignment/admin.py | 17 +++++++++++++++++ server/vbv_lernwelt/assignment/models.py | 4 ++++ server/vbv_lernwelt/assignment/views.py | 11 +++++++---- 3 files changed, 28 insertions(+), 4 deletions(-) diff --git a/server/vbv_lernwelt/assignment/admin.py b/server/vbv_lernwelt/assignment/admin.py index 2b0d1a50..1ae81bd3 100644 --- a/server/vbv_lernwelt/assignment/admin.py +++ b/server/vbv_lernwelt/assignment/admin.py @@ -25,3 +25,20 @@ class AssignmentCompletionAdmin(admin.ModelAdmin): "course_session", ] search_fields = ["assignment_user__email"] + readonly_fields = [ + "assignment_user", + "assignment", + "completion_data", + "course_session", + "learning_content_page", + "evaluation_points", + "submitted_at", + "evaluation_user", + "evaluation_submitted_at", + "evaluation_points_deducted_user", + ] + + def save_model(self, request, obj, form, change): + if change and "evaluation_points_deducted" in form.changed_data: + obj.evaluation_points_deducted_user = request.user + super().save_model(request, obj, form, change) diff --git a/server/vbv_lernwelt/assignment/models.py b/server/vbv_lernwelt/assignment/models.py index 7b359217..af1d2ad4 100644 --- a/server/vbv_lernwelt/assignment/models.py +++ b/server/vbv_lernwelt/assignment/models.py @@ -360,6 +360,10 @@ class AssignmentCompletion(models.Model): @property def evaluation_points_final(self): + """ + Das ist das relevante Feld für die Punkteberechnung, es berücksichtigt + den Punkteabzug aus `evaluation_points_deducted` + """ if self.evaluation_points is None: return None return self.evaluation_points - self.evaluation_points_deducted diff --git a/server/vbv_lernwelt/assignment/views.py b/server/vbv_lernwelt/assignment/views.py index f43dbd54..1eb04ffb 100644 --- a/server/vbv_lernwelt/assignment/views.py +++ b/server/vbv_lernwelt/assignment/views.py @@ -30,10 +30,13 @@ def request_assignment_completion_status(request, assignment_id, course_session_ # Convert the learning_content_page_id to a string data = list(qs) # Evaluate the queryset for item in data: - # only `evaluation_points_final` is relevant for the frontend - item["evaluation_points_final"] = ( - item["evaluation_points"] - item["evaluation_points_deducted"] - ) + if item["evaluation_points"] is not None: + # only `evaluation_points_final` is relevant for the frontend + item["evaluation_points_final"] = ( + item["evaluation_points"] - item["evaluation_points_deducted"] + ) + else: + item["evaluation_points_final"] = None item["learning_content_page_id"] = str(item["learning_content_page_id"]) return Response(status=200, data=data)