Skip to content

Commit 4669b09

Browse files
author
Sasha Romijn
committed
Fix ietf-tools#2071 - Add optional comment field for close request. Commit ready for merge.
- Legacy-Id: 16667
1 parent ce3368d commit 4669b09

6 files changed

Lines changed: 26 additions & 9 deletions

File tree

ietf/doc/tests_review.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -205,7 +205,8 @@ def test_close_request(self):
205205

206206
# close
207207
empty_outbox()
208-
r = self.client.post(close_url, { "close_reason": "withdrawn" })
208+
r = self.client.post(close_url, {"close_reason": "withdrawn",
209+
"close_comment": "review_request_close_comment"})
209210
self.assertEqual(r.status_code, 302)
210211

211212
review_req = reload_db_objects(review_req)
@@ -214,13 +215,17 @@ def test_close_request(self):
214215
e = doc.latest_event(ReviewRequestDocEvent)
215216
self.assertEqual(e.type, "closed_review_request")
216217
self.assertTrue("closed" in e.desc.lower())
218+
self.assertTrue("review_request_close_comment" in e.desc.lower())
217219

218220
e = doc.latest_event(ReviewAssignmentDocEvent)
219221
self.assertEqual(e.type, "closed_review_assignment")
220222
self.assertTrue("closed" in e.desc.lower())
223+
self.assertFalse("review_request_close_comment" in e.desc.lower())
221224

222225
self.assertEqual(len(outbox), 1)
223-
self.assertTrue("closed" in outbox[0].get_payload(decode=True).decode("utf-8").lower())
226+
mail_content = outbox[0].get_payload(decode=True).decode("utf-8").lower()
227+
self.assertTrue("closed" in mail_content)
228+
self.assertTrue("review_request_close_comment" in mail_content)
224229

225230
def test_possibly_advance_next_reviewer_for_team(self):
226231

ietf/doc/views_review.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -236,6 +236,7 @@ def review_request(request, name, request_id):
236236

237237
class CloseReviewRequestForm(forms.Form):
238238
close_reason = forms.ModelChoiceField(queryset=close_review_request_states(), widget=forms.RadioSelect, empty_label=None)
239+
close_comment = forms.CharField(label='Comment (optional)', max_length=255, required=False)
239240

240241
def __init__(self, can_manage_request, *args, **kwargs):
241242
super(CloseReviewRequestForm, self).__init__(*args, **kwargs)
@@ -262,7 +263,8 @@ def close_request(request, name, request_id):
262263
if request.method == "POST":
263264
form = CloseReviewRequestForm(can_manage_request, request.POST)
264265
if form.is_valid():
265-
close_review_request(request, review_req, form.cleaned_data["close_reason"])
266+
close_review_request(request, review_req,form.cleaned_data["close_reason"],
267+
form.cleaned_data["close_comment"])
266268

267269
return redirect(review_request, name=review_req.doc.name, request_id=review_req.pk)
268270
else:

ietf/group/forms.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -231,6 +231,7 @@ class ManageReviewRequestForm(forms.Form):
231231

232232
action = forms.ChoiceField(choices=ACTIONS, widget=forms.HiddenInput, required=False)
233233
close = forms.ModelChoiceField(queryset=close_review_request_states(), required=False)
234+
close_comment = forms.CharField(max_length=255, required=False)
234235
reviewer = PersonEmailChoiceField(empty_label="(None)", required=False, label_with="person")
235236
add_skip = forms.BooleanField(required=False)
236237

ietf/group/views.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1508,7 +1508,8 @@ def manage_review_requests(request, acronym, group_type=None, assignment_status=
15081508
for review_req in review_requests:
15091509
action = review_req.form.cleaned_data.get("action")
15101510
if action=="close":
1511-
close_review_request(request, review_req, review_req.form.cleaned_data["close"])
1511+
close_review_request(request, review_req, review_req.form.cleaned_data["close"],
1512+
review_req.form.cleaned_data["close_comment"])
15121513
elif action=="assign":
15131514
reqs_to_assign.append(review_req)
15141515

ietf/review/utils.py

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -563,7 +563,7 @@ def reviewer_settings_for(person_id):
563563

564564
break
565565

566-
def close_review_request(request, review_req, close_state):
566+
def close_review_request(request, review_req, close_state, close_comment=''):
567567
suggested_req = review_req.pk is None
568568

569569
review_req.state = close_state
@@ -573,13 +573,16 @@ def close_review_request(request, review_req, close_state):
573573
review_req.save()
574574

575575
if not suggested_req:
576+
descr = "Closed request for {} review by {} with state '{}'".format(
577+
review_req.type.name, review_req.team.acronym.upper(), close_state.name)
578+
if close_comment:
579+
descr += ': ' + close_comment
576580
ReviewRequestDocEvent.objects.create(
577581
type="closed_review_request",
578582
doc=review_req.doc,
579583
rev=review_req.doc.rev,
580584
by=request.user.person,
581-
desc="Closed request for {} review by {} with state '{}'".format(
582-
review_req.type.name, review_req.team.acronym.upper(), close_state.name),
585+
desc=descr,
583586
review_request=review_req,
584587
state=review_req.state,
585588
)
@@ -597,11 +600,14 @@ def close_review_request(request, review_req, close_state):
597600
state=assignment.state,
598601
)
599602

603+
msg = "Review request has been closed by {}.".format(request.user.person)
604+
if close_comment:
605+
msg += "\nComment: {}".format(close_comment)
600606
email_review_request_change(
601607
request, review_req,
602608
"Closed review request for {}: {}".format(review_req.doc.name, close_state.name),
603-
"Review request has been closed by {}.".format(request.user.person),
604-
by=request.user.person, notify_secretary=False, notify_reviewer=True, notify_requested_by=True)
609+
msg=msg, by=request.user.person, notify_secretary=False,
610+
notify_reviewer=True, notify_requested_by=True)
605611

606612
def suggested_review_requests_for_team(team):
607613

ietf/templates/group/manage_review_requests.html

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -153,6 +153,8 @@ <h3 class="panel-title">
153153
<span class="close-controls form-inline">
154154
<label for="{{ r.form.reviewer.id_for_label }}">Close:</label>
155155
{{ r.form.close }}
156+
<label for="{{ r.form.reviewer.id_for_close_comment }}">Optional comment:</label>
157+
{{ r.form.close_comment }}
156158
<button type="button" class="btn btn-default undo" title="Cancel closing">Cancel</button>
157159
{% if r.form.close.errors %}
158160
<br>

0 commit comments

Comments
 (0)