From 1b36ad7987238f50e73c7e10db9cda2ba4ab0d54 Mon Sep 17 00:00:00 2001
From: Andreas Svanberg <andreass@dsv.su.se>
Date: Tue, 18 Feb 2025 15:12:21 +0100
Subject: [PATCH] Disable ability to grade opponents after requesting
 improvements

---
 .../dsv/scipro/finalseminar/SeminarOppositionPanel.html  | 5 +++++
 .../dsv/scipro/finalseminar/SeminarOppositionPanel.java  | 9 +++++++--
 2 files changed, 12 insertions(+), 2 deletions(-)

diff --git a/view/src/main/java/se/su/dsv/scipro/finalseminar/SeminarOppositionPanel.html b/view/src/main/java/se/su/dsv/scipro/finalseminar/SeminarOppositionPanel.html
index 947d270792..7d665d4e31 100644
--- a/view/src/main/java/se/su/dsv/scipro/finalseminar/SeminarOppositionPanel.html
+++ b/view/src/main/java/se/su/dsv/scipro/finalseminar/SeminarOppositionPanel.html
@@ -58,6 +58,11 @@
                         </form>
 
                         <form wicket:id="request_improvements">
+                            <p>
+                                Once you request improvements the student have a limited time to make the requested changes.
+                                If they do not make the requested improvements in time, they will get an automatic failing grade.
+                                You will be notified when they've submitted a new report.
+                            </p>
                             <div class="mb-3">
                                 <label class="form-label" wicket:for="feedback_to_opponent">
                                     Provide feedback to the opponent on how to improve the opposition
diff --git a/view/src/main/java/se/su/dsv/scipro/finalseminar/SeminarOppositionPanel.java b/view/src/main/java/se/su/dsv/scipro/finalseminar/SeminarOppositionPanel.java
index fc652fbd80..9a788bc885 100644
--- a/view/src/main/java/se/su/dsv/scipro/finalseminar/SeminarOppositionPanel.java
+++ b/view/src/main/java/se/su/dsv/scipro/finalseminar/SeminarOppositionPanel.java
@@ -323,12 +323,17 @@ public class SeminarOppositionPanel extends Panel {
         @Override
         protected void onConfigure() {
             super.onConfigure();
+            FinalSeminarOpposition opposition = getModelObject();
             setVisibilityAllowed(
                 startDateHasPassed() &&
-                getModelObject().getPoints() == null &&
-                getModelObject().getFeedback() == null &&
+                opposition.getPoints() == null &&
+                opposition.getFeedback() == null &&
                 isHeadSupervisor()
             );
+            boolean hasRequestedImprovements = opposition.getImprovementsRequestedAt() != null;
+            boolean reportIsSubmitted =
+                opposition.getOppositionReport() != null && opposition.getOppositionReport().isSubmitted();
+            setEnabled(!hasRequestedImprovements || reportIsSubmitted);
         }
     }