From 1541d9b33723f06c0391e2dc57c5c04f9f23dae5 Mon Sep 17 00:00:00 2001
From: George Katsikas <giorgakis.katsikas@gmail.com>
Date: Thu, 22 Feb 2024 15:55:08 +0100
Subject: [PATCH] hotfix treat empty referee response as null

---
 scipost_django/submissions/forms/__init__.py | 14 +++++++-------
 scipost_django/submissions/views/__init__.py |  1 +
 2 files changed, 8 insertions(+), 7 deletions(-)

diff --git a/scipost_django/submissions/forms/__init__.py b/scipost_django/submissions/forms/__init__.py
index 782f0726f..0ecca5627 100644
--- a/scipost_django/submissions/forms/__init__.py
+++ b/scipost_django/submissions/forms/__init__.py
@@ -2483,7 +2483,7 @@ class ConsiderRefereeInvitationForm(forms.Form):
         label="Are you willing to referee this Submission?",
     )
     refusal_reason = forms.ChoiceField(
-        choices=EditorialAssignment.REFUSAL_REASONS, required=False
+        choices=[(None, "")] + list(EditorialAssignment.REFUSAL_REASONS), required=False
     )
     other_refusal_reason = forms.CharField(
         required=False,
@@ -2497,24 +2497,24 @@ class ConsiderRefereeInvitationForm(forms.Form):
 
     def clean(self):
         accepted = self.cleaned_data.get("accept", None)
-        reason = self.cleaned_data.get("refusal_reason", None)
-        other_refusal_reason = self.cleaned_data.get("other_refusal_reason", None)
+        reason = self.cleaned_data.get("refusal_reason", "")
+        other_refusal_reason = self.cleaned_data.get("other_refusal_reason", "")
 
         if accepted == "False":
-            if reason is None:
+            if reason == "":
                 self.add_error(
                     "refusal_reason", "Please select a reason for declining."
                 )
-            if reason == "other" and other_refusal_reason is None:
+            if reason == "OTH" and other_refusal_reason == "":
                 self.add_error(
                     "other_refusal_reason", "Please specify your reason for declining."
                 )
-            elif reason != "other" and other_refusal_reason is not None:
+            elif reason != "OTH" and other_refusal_reason != "":
                 self.add_error(
                     "other_refusal_reason",
                     'Please select "Other" to specify your reason for declining.',
                 )
-        elif reason is not None:
+        elif accepted == "True" and reason != "":
             self.add_error(
                 "refusal_reason",
                 "You cannot select a refusal reason if you accept.",
diff --git a/scipost_django/submissions/views/__init__.py b/scipost_django/submissions/views/__init__.py
index 7097da88a..879604db3 100644
--- a/scipost_django/submissions/views/__init__.py
+++ b/scipost_django/submissions/views/__init__.py
@@ -1567,6 +1567,7 @@ def decline_ref_invitation(request, invitation_key):
         invitation.accepted = False
         invitation.date_responded = timezone.now()
         invitation.refusal_reason = form.cleaned_data["refusal_reason"]
+        invitation.other_refusal_reason = form.cleaned_data["other_refusal_reason"]
         invitation.save()
 
         mail_util = DirectMailUtil(
-- 
GitLab