diff --git a/opentech/apply/review/tests/test_views.py b/opentech/apply/review/tests/test_views.py index 8d0c1fe20f3131fc0158bfd151c40401e659555d..c59daab4810cc07a9a2a1bd31912673779afa3e4 100644 --- a/opentech/apply/review/tests/test_views.py +++ b/opentech/apply/review/tests/test_views.py @@ -7,7 +7,7 @@ from opentech.apply.utils.testing.tests import BaseViewTestCase from .factories import ReviewFactory, ReviewFormFieldsFactory, ReviewFormFactory, ReviewOpinionFactory from ..models import Review, ReviewOpinion -from ..options import NA, AGREE +from ..options import NA, AGREE, DISAGREE class StaffReviewsTestCase(BaseViewTestCase): @@ -263,10 +263,19 @@ class StaffReviewOpinionCase(BaseViewTestCase): def test_can_add_opinion_to_others_review(self): staff = StaffFactory() review = ReviewFactory(submission=self.submission, author=staff, recommendation_yes=True) - self.post_page(review, {'agree': AGREE}) + response = self.post_page(review, {'agree': AGREE}) self.assertTrue(review.opinions.first().opinion_display in Activity.objects.first().message) self.assertEqual(ReviewOpinion.objects.all().count(), 1) self.assertEqual(ReviewOpinion.objects.first().opinion, AGREE) + url = self.url_from_pattern('apply:submissions:reviews:review', kwargs={'submission_pk': self.submission.pk, 'pk': review.id}) + self.assertRedirects(response, url) + + def test_disagree_opinion_redirects_to_review_form(self): + staff = StaffFactory() + review = ReviewFactory(submission=self.submission, author=staff, recommendation_yes=True) + response = self.post_page(review, {'disagree': DISAGREE}) + url = self.url_from_pattern('funds:submissions:reviews:form', kwargs={'submission_pk': self.submission.id}) + self.assertRedirects(response, url) class NonStaffReviewOpinionCase(BaseViewTestCase): diff --git a/opentech/apply/review/views.py b/opentech/apply/review/views.py index 09752f6aee1a8d8d3f95ee6efcae9e74e5c4a857..03da640b2dc085db013a6a6062fa28b5dd6d2dff 100644 --- a/opentech/apply/review/views.py +++ b/opentech/apply/review/views.py @@ -21,6 +21,7 @@ from opentech.apply.users.models import User from opentech.apply.utils.views import CreateOrUpdateView from .models import Review +from .options import DISAGREE class ReviewContextMixin: @@ -191,15 +192,20 @@ class ReviewOpinionFormView(CreateView): form.instance.author = self.request.user form.instance.review = self.review response = super().form_valid(form) + opinion = form.instance messenger( MESSAGES.REVIEW_OPINION, request=self.request, user=self.request.user, submission=self.review.submission, - related=form.instance, + related=opinion, ) - return response + + if opinion.opinion == DISAGREE: + return HttpResponseRedirect(reverse_lazy('apply:submissions:reviews:form', args=(self.review.submission.pk,))) + else: + return response def get_success_url(self): return self.review.get_absolute_url()