Skip to content

Commit 062707f

Browse files
committed
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. Commit ready for merge.
- Legacy-Id: 12486
1 parent 06179c7 commit 062707f

3 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": [

0 commit comments

Comments
 (0)