From 6e6c401685982ba71f8e7ff5d2cf7a846cc3dd77 Mon Sep 17 00:00:00 2001
From: George Katsikas <giorgakis.katsikas@gmail.com>
Date: Fri, 15 Mar 2024 11:07:19 +0100
Subject: [PATCH] rework default proceedings/collection selection

fixes #78
fixes #207
---
 scipost_django/submissions/forms/__init__.py | 25 +++++++++++++-------
 1 file changed, 16 insertions(+), 9 deletions(-)

diff --git a/scipost_django/submissions/forms/__init__.py b/scipost_django/submissions/forms/__init__.py
index 1eac64e0f..31a2ad3d7 100644
--- a/scipost_django/submissions/forms/__init__.py
+++ b/scipost_django/submissions/forms/__init__.py
@@ -932,9 +932,11 @@ class SubmissionPrefillForm(forms.Form):
             "acad_field": self.journal.college.acad_field,
             "submitted_to": self.journal,
         }
-        if self.thread_hash:
+        if self.latest_submission:
             form_data["thread_hash"] = self.thread_hash
             form_data["is_resubmission_of"] = self.latest_submission.id
+            form_data["proceedings"] = self.latest_submission.proceedings
+            form_data["collection"] = self.latest_submission.collections.first()
         return form_data
 
 
@@ -1416,16 +1418,21 @@ class SubmissionForm(forms.ModelForm):
             )
 
         # Proceedings & Collection submission fields
+        if "LectNotes" not in self.submitted_to_journal.doi_label:
+            del self.fields["collection"]
+
         if "Proc" not in self.submitted_to_journal.doi_label:
             del self.fields["proceedings"]
-        elif "LectNotes" not in self.submitted_to_journal.doi_label:
-            del self.fields["collection"]
-        else:
-            qs = self.fields["proceedings"].queryset.open_for_submission()
-            self.fields["proceedings"].queryset = qs
-            self.fields["proceedings"].empty_label = None
-            if not qs.exists():
-                del self.fields["proceedings"]
+
+        # Filter the list of proceedings to those open for submission
+        qs = self.fields["proceedings"].queryset.open_for_submission()
+        # If this is a resubmission, add the previous proceedings to the list
+        if self.is_resubmission():
+            resubmission = Submission.objects.get(id=self.is_resubmission_of)
+            qs = qs | Proceedings.objects.filter(id=resubmission.proceedings.id)
+        if not qs.exists():
+            del self.fields["proceedings"]
+        self.fields["proceedings"].queryset = qs
 
     def is_resubmission(self):
         return self.is_resubmission_of is not None
-- 
GitLab