From 4be83efcbb4033dbad00281ee067bc30a90fce77 Mon Sep 17 00:00:00 2001 From: Todd Dembrey <todd.dembrey@torchbox.com> Date: Mon, 4 Mar 2019 17:55:23 +0000 Subject: [PATCH] Gh-1016: Make sure we dont duplicate assignment when adding in a role --- opentech/apply/funds/forms.py | 7 ++----- opentech/apply/funds/tests/test_views.py | 8 ++++++++ 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/opentech/apply/funds/forms.py b/opentech/apply/funds/forms.py index a53561320..544007cef 100644 --- a/opentech/apply/funds/forms.py +++ b/opentech/apply/funds/forms.py @@ -181,11 +181,8 @@ class UpdateReviewersForm(forms.ModelForm): } for role, reviewer in assigned_roles.items(): if reviewer: - AssignedReviewers.objects.update_or_create( - submission=instance, - role=role, - defaults={'reviewer': reviewer}, - ) + AssignedReviewers.objects.filter(submission=instance, role=role).delete() + AssignedReviewers.objects.update_or_create(submission=instance, reviewer=reviewer, defaults={'role': role}) # 2. Update non-role reviewers # 2a. Remove those not on form diff --git a/opentech/apply/funds/tests/test_views.py b/opentech/apply/funds/tests/test_views.py index 024aea532..29bb2dfc0 100644 --- a/opentech/apply/funds/tests/test_views.py +++ b/opentech/apply/funds/tests/test_views.py @@ -297,6 +297,14 @@ class TestReviewersUpdateView(BaseSubmissionViewTestCase): # Make sure that the ex-role-reviewer is still assigned record self.assertCountEqual(submission.reviewers.all(), self.staff[0:2]) + def test_can_be_made_role_and_not_duplciated(self): + submission = ApplicationSubmissionFactory() + + ReviewFactory(submission=submission, author=self.staff[0]) + + self.post_form(submission, reviewer_roles=[self.staff[0]]) + self.assertCountEqual(submission.reviewers.all(), [self.staff[0]]) + def test_can_remove_external_reviewer_and_review_remains(self): submission = ApplicationSubmissionFactory(lead=self.user) reviewer = self.reviewers[0] -- GitLab