From 3290bb2b2494a4bcf5fd8500f8a49e0a9d0c015a Mon Sep 17 00:00:00 2001
From: fidoriel <49869342+fidoriel@users.noreply.github.com>
Date: Mon, 6 Dec 2021 20:10:18 +0100
Subject: [PATCH] #1640 GradeDocument edit page: Show correct type (#1661)

Fix missing final_grades template argument.
---
 evap/grades/tests.py | 30 ++++++++++++++++++++++++++++++
 evap/grades/views.py |  5 +++++
 2 files changed, 35 insertions(+)

diff --git a/evap/grades/tests.py b/evap/grades/tests.py
index 8f5e98ead..62ad3e6c7 100644
--- a/evap/grades/tests.py
+++ b/evap/grades/tests.py
@@ -6,6 +6,7 @@ from django_webtest import WebTest
 from model_bakery import baker
 
 from evap.evaluation.models import Contribution, Course, Evaluation, Questionnaire, Semester, UserProfile
+from evap.grades.models import GradeDocument
 
 
 class GradeUploadTest(WebTest):
@@ -238,3 +239,32 @@ class GradeCourseViewTest(WebTest):
             Evaluation, course=baker.make(Course, pk=1, semester=archived_semester), state=Evaluation.State.PREPARED
         )
         self.app.get("/grades/semester/1/course/1", user=self.grade_publisher, status=403)
+
+
+class GradeEditTest(WebTest):
+    def test_grades_headlines(self):
+
+        grade_publisher = baker.make(
+            UserProfile,
+            email="grade_publisher@institution.example.com",
+            groups=[Group.objects.get(name="Grade publisher")],
+        )
+        grade_document = baker.make(GradeDocument)
+
+        url = f"/grades/semester/{grade_document.course.semester.pk}/course/{grade_document.course.pk}/edit/{grade_document.pk}"
+
+        response = self.app.get(
+            url,
+            user=grade_publisher,
+        )
+        self.assertContains(response, "Upload midterm grades")
+        self.assertNotContains(response, "Upload final grades")
+
+        grade_document.type = GradeDocument.Type.FINAL_GRADES
+        grade_document.save()
+        response = self.app.get(
+            url,
+            user=grade_publisher,
+        )
+        self.assertContains(response, "Upload final grades")
+        self.assertNotContains(response, "Upload midterm grades")
diff --git a/evap/grades/views.py b/evap/grades/views.py
index b4de9d087..be506909c 100644
--- a/evap/grades/views.py
+++ b/evap/grades/views.py
@@ -165,6 +165,10 @@ def edit_grades(request, semester_id, course_id, grade_document_id):
 
     form = GradeDocumentForm(request.POST or None, request.FILES or None, instance=grade_document)
 
+    final_grades = (
+        grade_document.type == GradeDocument.Type.FINAL_GRADES
+    )  # if parameter is not given, assume midterm grades
+
     if form.is_valid():
         form.save(modifying_user=request.user)
         messages.success(request, _("Successfully updated grades."))
@@ -175,6 +179,7 @@ def edit_grades(request, semester_id, course_id, grade_document_id):
         course=course,
         form=form,
         show_automated_publishing_info=False,
+        final_grades=final_grades,
     )
     return render(request, "grades_upload_form.html", template_data)
 
-- 
GitLab