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