Skip to content

Commit c5e802e

Browse files
author
Jiri Suchan
committed
prevent submitter duplicity as a reviewer; enforce reviewer uniqueness in model
1 parent 23b81d7 commit c5e802e

File tree

3 files changed

+32
-4
lines changed

3 files changed

+32
-4
lines changed

tests/test_admin.py

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ class TestAdminViews(TestCase):
1313
fixtures = ['test.json']
1414

1515
def setUp(self):
16-
User.objects.create_superuser(username='admin', email='[email protected]', password='password')
16+
self.user = User.objects.create_superuser(username='admin', email='[email protected]', password='password')
1717
self.assertTrue(
1818
self.client.login(username='admin', password='password')
1919
)
@@ -132,7 +132,7 @@ def test_post_create_form(self):
132132
'title': "Subpage submitted",
133133
'slug': 'subpage-submitted',
134134

135-
'create_review_reviewers-TOTAL_FORMS': 2,
135+
'create_review_reviewers-TOTAL_FORMS': 3,
136136
'create_review_reviewers-INITIAL_FORMS': 0,
137137
'create_review_reviewers-MIN_NUM_FORMS': 0,
138138
'create_review_reviewers-MAX_NUM_FORMS': 1000,
@@ -145,6 +145,10 @@ def test_post_create_form(self):
145145
'create_review_reviewers-1-email': '',
146146
'create_review_reviewers-1-DELETE': '',
147147

148+
'create_review_reviewers-2-user': self.user.pk,
149+
'create_review_reviewers-2-email': self.user.email,
150+
'create_review_reviewers-2-DELETE': '',
151+
148152
'action-submit-for-review': '1',
149153
})
150154

@@ -160,3 +164,6 @@ def test_post_create_form(self):
160164
self.assertEqual(len(mail.outbox), 2)
161165
email_recipients = set(email.to[0] for email in mail.outbox)
162166
self.assertEqual(email_recipients, {'[email protected]', '[email protected]'})
167+
168+
review_view = self.client.get('/admin/wagtail_review/reviews/%s/view/' % review.pk)
169+
self.assertEqual(review_view.status_code, 200)
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
# Generated by Django 2.2.4 on 2019-08-23 16:37
2+
3+
from django.conf import settings
4+
from django.db import migrations
5+
6+
7+
class Migration(migrations.Migration):
8+
9+
dependencies = [
10+
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
11+
('wagtail_review', '0003_response'),
12+
]
13+
14+
operations = [
15+
migrations.AlterUniqueTogether(
16+
name='reviewer',
17+
unique_together={('review', 'user')},
18+
),
19+
]

wagtail_review/wagtail_hooks.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -99,8 +99,10 @@ def handle_submit_for_review(request, page):
9999
form.save()
100100
reviewer_formset.save()
101101

102-
# create a reviewer record for the current user
103-
review.reviewers.create(user=review.submitter)
102+
reviewers = filter(None, [f.cleaned_data['user'] for f in reviewer_formset.forms])
103+
if review.submitter not in reviewers:
104+
# create a reviewer record for the current user
105+
review.reviewers.create(user=review.submitter)
104106

105107
review.send_request_emails()
106108

0 commit comments

Comments
 (0)