Let a reviewer indicate that an AD should give this review early attention. Fixes #2553. Commit ready for merge.

- Legacy-Id: 15676
This commit is contained in:
Robert Sparks 2018-11-02 21:23:27 +00:00
parent c7bf147b1d
commit b76ea7bcd5
3 changed files with 31 additions and 2 deletions

View file

@ -649,7 +649,7 @@ class ReviewTests(TestCase):
self.assertTrue(settings.MAILING_LIST_ARCHIVE_URL in review_req.review.external_url)
def test_complete_notify_ad(self):
def test_complete_notify_ad_because_team_settings(self):
review_req, url = self.setup_complete_review_test()
review_req.team.reviewteamsettings.notify_ad_when.add(ReviewResultName.objects.get(slug='issues'))
# TODO - it's a little surprising that the factories so far didn't give this doc an ad
@ -672,6 +672,31 @@ class ReviewTests(TestCase):
self.assertEqual(len(outbox), 2)
self.assertIn('Has Issues', outbox[-1]['Subject'])
self.assertIn('settings indicated', outbox[-1].get_payload(decode=True).decode("utf-8"))
def test_complete_notify_ad_because_checkbox(self):
review_req, url = self.setup_complete_review_test()
review_req.doc.ad = PersonFactory()
review_req.doc.save_with_history([DocEvent.objects.create(doc=review_req.doc, rev=review_req.doc.rev, by=review_req.reviewer.person, type='changed_document',desc='added an AD')])
login_testing_unauthorized(self, review_req.reviewer.person.user.username, url)
empty_outbox()
r = self.client.post(url, data={
"result": ReviewResultName.objects.get(reviewteamsettings_review_results_set__group=review_req.team, slug="issues").pk,
"state": ReviewRequestStateName.objects.get(slug="completed").pk,
"reviewed_rev": review_req.doc.rev,
"review_submission": "enter",
"review_content": "This is a review\nwith two lines",
"review_url": "",
"review_file": "",
"email_ad": "1",
})
self.assertEqual(r.status_code, 302)
self.assertEqual(len(outbox), 2)
self.assertIn('Has Issues', outbox[-1]['Subject'])
self.assertIn('reviewer indicated', outbox[-1].get_payload(decode=True).decode("utf-8"))
@patch('requests.get')
def test_complete_review_link_to_mailing_list(self, mock):

View file

@ -379,6 +379,7 @@ class CompleteReviewForm(forms.Form):
completion_date = DatepickerDateField(date_format="yyyy-mm-dd", picker_settings={ "autoclose": "1" }, initial=datetime.date.today, help_text="Date of announcement of the results of this review")
completion_time = forms.TimeField(widget=forms.HiddenInput, initial=datetime.time.min)
cc = MultiEmailField(required=False, help_text="Email addresses to send to in addition to the review team list")
email_ad = forms.BooleanField(label="Send extra email to the responsible AD suggesting early attention", required=False)
def __init__(self, review_req, is_reviewer, *args, **kwargs):
self.review_req = review_req
@ -645,13 +646,14 @@ def complete_review(request, name, request_id):
review.external_url = mailarch.construct_message_url(list_name, email.utils.unquote(msg["Message-ID"]))
review.save_with_history([close_event])
if review_req.result in review_req.team.reviewteamsettings.notify_ad_when.all():
if form.cleaned_data['email_ad'] or review_req.result in review_req.team.reviewteamsettings.notify_ad_when.all():
(to, cc) = gather_address_lists('review_notify_ad',review_req = review_req)
msg_txt = render_to_string("review/notify_ad.txt", {
"to": to,
"cc": cc,
"review_req": review_req,
"settings": settings,
"explicit_request": form.cleaned_data['email_ad'],
})
msg = infer_message(msg_txt)
msg.by = request.user.person

View file

@ -9,4 +9,6 @@ The review is available at {{settings.IDTRACKER_BASE_URL}}{% url 'ietf.doc.views
The document is available at {{settings.IDTRACKER_BASE_URL}}{% url 'ietf.doc.views_doc.document_main' name=review_req.doc.name %}
This message was sent because {% if explicit_request %}the reviewer indicated it should be on the review completion form{% else %}the review team settings indicated it should be{% endif %}.
{% endautoescape %}