diff --git a/opentech/apply/funds/forms.py b/opentech/apply/funds/forms.py index 556c2e9a9bf9e538caf428bb64fa35cd078f90c4..75ee3336a6f4837501b5e2b75a001e4cd7d00f3e 100644 --- a/opentech/apply/funds/forms.py +++ b/opentech/apply/funds/forms.py @@ -68,7 +68,10 @@ class UpdateReviewersForm(forms.ModelForm): self.request = kwargs.pop('request', None) super().__init__(*args, **kwargs) + # All submitted reviews by non-role reviewers self.submitted_reviewers = User.objects.filter(id__in=self.instance.reviews.values('author')) + self.submitted_reviewers = self.submitted_reviewers.exclude( + id__in=AssignedReviewers.objects.role_reviewers_by_submission(self.instance).values('reviewer')) if self.can_alter_external_reviewers(self.instance, self.user): reviewers = self.instance.reviewers.all() diff --git a/opentech/apply/funds/models/submissions.py b/opentech/apply/funds/models/submissions.py index 96fcb6e25a3fb763bf311651406e968bdaf9fe34..55c7a0030a2801ee53fa4d51ad2ddb634b5309af 100644 --- a/opentech/apply/funds/models/submissions.py +++ b/opentech/apply/funds/models/submissions.py @@ -677,6 +677,11 @@ class ApplicationRevision(AccessFormData, models.Model): }) +class AssignedReviewersQuerySet(models.QuerySet): + def role_reviewers_by_submission(self, submission): + return self.filter(role__isnull=False, submission=submission) + + class AssignedReviewers(models.Model): reviewer = models.ForeignKey( settings.AUTH_USER_MODEL, @@ -695,6 +700,8 @@ class AssignedReviewers(models.Model): null=True, ) + objects = AssignedReviewersQuerySet.as_manager() + class Meta: unique_together = ('submission', 'role')