diff --git a/scipost_django/submissions/forms/__init__.py b/scipost_django/submissions/forms/__init__.py index e94841fd9994d5da0540c4c0f33edf5b8c411ebe..ddce84b2af68e6ea2293c0e6ca05bcbf1058a9de 100644 --- a/scipost_django/submissions/forms/__init__.py +++ b/scipost_django/submissions/forms/__init__.py @@ -3156,17 +3156,14 @@ class EICRecommendationForm(forms.ModelForm): latest_recommendation.recommendation ) - for_journal_qs = Journal.objects.active().filter( - # The journals which can be recommended for are those falling under - # the responsibility of the College of the journal submitted to - college=self.submission.submitted_to.college - ) - if self.submission.submitted_to.name.partition(" ")[0] == "SciPost": - # Submitted to a SciPost journal, so Selections is accessible - for_journal_qs = for_journal_qs | Journal.objects.filter( - name="SciPost Selections" + alternative_journal_ids = ( + self.submission.submitted_to.alternative_journals.active().values_list( + "id", flat=True ) - self.fields["for_journal"].empty_label = "Any/All Journals" + ) + for_journal_qs = Journal.objects.filter( + id__in=list(alternative_journal_ids) + [self.submission.submitted_to.id] + ) self.fields["for_journal"].queryset = for_journal_qs if self.submission.submitted_to.name.partition(" ")[0] == "SciPost": # Submitted to a SciPost journal, so Core and Selections are accessible @@ -3401,6 +3398,14 @@ class RecommendationVoteForm(forms.Form): required=False, ) + def __init__(self, *args, **kwargs): + self.recommendation: "EICRecommendation" = kwargs.pop("recommendation") + super().__init__(*args, **kwargs) + + self.fields["alternative_for_journal"].queryset = ( + self.recommendation.submission.submitted_to.alternative_journals.all() + ) + def clean(self): cleaned_data = super().clean() if cleaned_data["vote"] == "disagree" and ( diff --git a/scipost_django/submissions/views/__init__.py b/scipost_django/submissions/views/__init__.py index 192fbe284c31f61fb576650fc44090108509c957..ccb80f1843b53985b1c826bc64f7307ccf091944 100644 --- a/scipost_django/submissions/views/__init__.py +++ b/scipost_django/submissions/views/__init__.py @@ -2948,9 +2948,9 @@ def _hx_recommendation_vote_form(request, rec_id): initial = {"vote": previous_vote} if request.POST: - form = RecommendationVoteForm(request.POST) + form = RecommendationVoteForm(request.POST, recommendation=recommendation) else: - form = RecommendationVoteForm(initial=initial) + form = RecommendationVoteForm(initial=initial, recommendation=recommendation) if form.is_valid(): # Delete previous tierings and alternative recs, irrespective of the vote SubmissionTiering.objects.filter(