Skip to content

Commit 8c7a400

Browse files
committed
Merged in [12486] from rjsparks@nostrum.com:
Fill in CC list defaults for review completion mail. Make the mail come from the reviewer instead of the default secretariat address. Fixes ietf-tools#2078 and ietf-tools#2054. - Legacy-Id: 12488 Note: SVN reference [12486] has been migrated to Git commit 062707f
1 parent 8ed5f78 commit 8c7a400

4 files changed

Lines changed: 115 additions & 3 deletions

File tree

ietf/doc/views_review.py

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
import datetime, os, email.utils
22

3+
import debug # pyflakes:ignore
4+
35
from django.http import HttpResponseForbidden, JsonResponse
46
from django.shortcuts import render, get_object_or_404, redirect
57
from django import forms
@@ -26,6 +28,8 @@
2628
from ietf.utils.text import strip_prefix, xslugify
2729
from ietf.utils.textupload import get_cleaned_text_file_content
2830
from ietf.utils.mail import send_mail
31+
from ietf.mailtrigger.utils import gather_address_lists
32+
from ietf.utils.fields import MultiEmailField
2933

3034
def clean_doc_revision(doc, rev):
3135
if rev:
@@ -333,7 +337,7 @@ class CompleteReviewForm(forms.Form):
333337
review_content = forms.CharField(widget=forms.Textarea, required=False)
334338
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")
335339
completion_time = forms.TimeField(widget=forms.HiddenInput, initial=datetime.time.min)
336-
cc = forms.CharField(required=False, help_text="Email addresses to send to in addition to the review team list")
340+
cc = MultiEmailField(required=False, help_text="Email addresses to send to in addition to the review team list")
337341

338342
def __init__(self, review_req, *args, **kwargs):
339343
self.review_req = review_req
@@ -414,6 +418,8 @@ def complete_review(request, name, request_id):
414418
if not (is_reviewer or can_manage_request):
415419
return HttpResponseForbidden("You do not have permission to perform this action")
416420

421+
(to, cc) = gather_address_lists('review_completed',review_req = review_req)
422+
417423
if request.method == "POST":
418424
form = CompleteReviewForm(review_req, request.POST, request.FILES)
419425
if form.is_valid():
@@ -531,7 +537,8 @@ def complete_review(request, name, request_id):
531537
if need_to_email_review:
532538
# email the review
533539
subject = "{} of {}-{}".format("Partial review" if review_req.state_id == "part-completed" else "Review", review_req.doc.name, review_req.reviewed_rev)
534-
msg = send_mail(request, [(review_req.team.name, review_req.team.list_email)], None,
540+
msg = send_mail(request, to,
541+
(request.user.person.plain_name(),request.user.person.email_address()),
535542
subject,
536543
"review/completed_review.txt", {
537544
"review_req": review_req,
@@ -548,7 +555,8 @@ def complete_review(request, name, request_id):
548555
else:
549556
form = CompleteReviewForm(review_req, initial={
550557
"reviewed_rev": review_req.reviewed_rev,
551-
"result": review_req.result_id
558+
"result": review_req.result_id,
559+
"cc": ", ".join(cc),
552560
})
553561

554562
mail_archive_query_urls = mailarch.construct_query_urls(review_req)
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
# -*- coding: utf-8 -*-
2+
from __future__ import unicode_literals
3+
4+
from django.db import migrations
5+
6+
def forward(apps, schema_editor):
7+
8+
MailTrigger=apps.get_model('mailtrigger','MailTrigger')
9+
Recipient=apps.get_model('mailtrigger','Recipient')
10+
11+
Recipient.objects.create(
12+
slug='review_team_mail_list',
13+
desc="The review team's email list",
14+
template="{{review_req.team.list_email}}"
15+
)
16+
17+
Recipient.objects.create(
18+
slug='review_doc_group_mail_list',
19+
desc="The working group list for the document being reviewed",
20+
template="{{review_req.doc.group.list_email}}"
21+
)
22+
23+
Recipient.objects.create(
24+
slug='review_doc_all_parties',
25+
desc="The .all alias for the document being reviewed",
26+
template="{% if review_req.doc.type_id == 'draft' %}<{{review_req.doc.name}}.all@ietf.org>{% endif %}"
27+
)
28+
29+
Recipient.objects.create(
30+
slug='ietf_general',
31+
desc="The IETF general discussion list",
32+
template="ietf@ietf.org"
33+
)
34+
annc = MailTrigger.objects.create(
35+
slug='review_completed',
36+
desc='Recipients when an review is completed',
37+
)
38+
annc.to = Recipient.objects.filter(slug__in=['review_team_mail_list',])
39+
annc.cc = Recipient.objects.filter(slug__in=['review_doc_all_parties','review_doc_group_mail_list','ietf_general'])
40+
41+
def reverse(apps, schema_editor):
42+
43+
MailTrigger=apps.get_model('mailtrigger','MailTrigger')
44+
Recipient=apps.get_model('mailtrigger','Recipient')
45+
46+
MailTrigger.objects.filter(slug='review_completed').delete()
47+
Recipient.objects.filter(slug__in=['review_team_mail_list','review_doc_group_mail_list','review_doc_all_parties','ietf_general']).delete()
48+
49+
class Migration(migrations.Migration):
50+
51+
dependencies = [
52+
('mailtrigger', '0008_review_summary_triggers'),
53+
]
54+
55+
operations = [
56+
migrations.RunPython(forward, reverse)
57+
]

ietf/name/fixtures/names.json

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5131,6 +5131,14 @@
51315131
"model": "mailtrigger.recipient",
51325132
"pk": "ietf_announce"
51335133
},
5134+
{
5135+
"fields": {
5136+
"template": "ietf@ietf.org",
5137+
"desc": "The IETF general discussion list"
5138+
},
5139+
"model": "mailtrigger.recipient",
5140+
"pk": "ietf_general"
5141+
},
51345142
{
51355143
"fields": {
51365144
"template": "<ietf-secretariat-reply@ietf.org>",
@@ -5275,6 +5283,30 @@
52755283
"model": "mailtrigger.recipient",
52765284
"pk": "nominee"
52775285
},
5286+
{
5287+
"fields": {
5288+
"template": "{% if review_req.doc.type_id == 'draft' %}<{{review_req.doc.name}}.all@ietf.org>{% endif %}",
5289+
"desc": "The .all alias for the document being reviewed"
5290+
},
5291+
"model": "mailtrigger.recipient",
5292+
"pk": "review_doc_all_parties"
5293+
},
5294+
{
5295+
"fields": {
5296+
"template": "{{review_req.doc.group.list_email}}",
5297+
"desc": "The working group list for the document being reviewed"
5298+
},
5299+
"model": "mailtrigger.recipient",
5300+
"pk": "review_doc_group_mail_list"
5301+
},
5302+
{
5303+
"fields": {
5304+
"template": "{{review_req.team.list_email}}",
5305+
"desc": "The review team's email list"
5306+
},
5307+
"model": "mailtrigger.recipient",
5308+
"pk": "review_team_mail_list"
5309+
},
52785310
{
52795311
"fields": {
52805312
"template": "<rfc-editor@rfc-editor.org>",
@@ -6230,6 +6262,21 @@
62306262
"model": "mailtrigger.mailtrigger",
62316263
"pk": "review_assignments_summarized"
62326264
},
6265+
{
6266+
"fields": {
6267+
"cc": [
6268+
"ietf_general",
6269+
"review_doc_all_parties",
6270+
"review_doc_group_mail_list"
6271+
],
6272+
"to": [
6273+
"review_team_mail_list"
6274+
],
6275+
"desc": "Recipients when an review is completed"
6276+
},
6277+
"model": "mailtrigger.mailtrigger",
6278+
"pk": "review_completed"
6279+
},
62336280
{
62346281
"fields": {
62356282
"cc": [

release-coverage.json.gz

4 Bytes
Binary file not shown.

0 commit comments

Comments
 (0)