Skip to content

Commit 3b811ec

Browse files
committed
Merged in [15708] and [15730] from housley@vigilsec.com:
Added a mail alias for all review team secretaries. Fixes ietf-tools#2139. Use the alias if there is one for email about review request changes. Added a test for the review team secretary alias functionality. - Legacy-Id: 15746 Note: SVN reference [15708] has been migrated to Git commit 6067dcb Note: SVN reference [15730] has been migrated to Git commit d525ade
2 parents 0d9c97c + d525ade commit 3b811ec

8 files changed

Lines changed: 58 additions & 5 deletions

File tree

ietf/doc/tests_review.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
from requests import Response
99

1010

11+
from django.apps import apps
1112
from django.urls import reverse as urlreverse
1213
from django.conf import settings
1314

@@ -98,6 +99,27 @@ def test_request_review(self):
9899
self.assertTrue('reviewteam3 Early' in outbox[1]['Subject'])
99100
self.assertTrue('reviewsecretary3@' in outbox[1]['To'])
100101

102+
# set the reviewteamsetting for the secretary email alias, then do the post again
103+
m = apps.get_model('review', 'ReviewTeamSettings')
104+
for row in m.objects.all():
105+
if row.group.upcase_acronym == review_team3.upcase_acronym:
106+
row.secr_mail_alias = 'reviewsecretary3-alias@example.com'
107+
row.save(update_fields=['secr_mail_alias'])
108+
109+
r = self.client.post(url, {
110+
"type": "early",
111+
"team": [review_team.pk,review_team3.pk],
112+
"deadline": deadline.isoformat(),
113+
"requested_rev": "01",
114+
"requested_by": Person.objects.get(user__username="ad").pk,
115+
"comment": "gZT2iiYqYLKiQHvsgWCcVLdH"
116+
})
117+
self.assertEqual(r.status_code, 302)
118+
119+
self.assertEqual(len(outbox),4)
120+
self.assertTrue('reviewsecretary@' in outbox[2]['To'])
121+
self.assertTrue('reviewsecretary3-alias@' in outbox[3]['To'])
122+
101123
def test_request_review_of_rfc(self):
102124
doc = WgRfcFactory()
103125

ietf/mailtrigger/migrations/0003_add_review_notify_ad.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ class Migration(migrations.Migration):
3737

3838
dependencies = [
3939
('mailtrigger', '0002_conflrev_changes'),
40-
('review', '0003_add_notify_ad_when'),
40+
('review', '0004_reviewteamsettings_secr_mail_alias'),
4141
]
4242

4343
operations = [

ietf/mailtrigger/models.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
from email.utils import parseaddr
77
from ietf.utils.mail import formataddr
88
from ietf.person.models import Email
9+
from ietf.review.models import ReviewTeamSettings
910

1011
import debug # pyflakes:ignore
1112

@@ -172,7 +173,11 @@ def gather_group_secretaries(self, **kwargs):
172173
if 'group' in kwargs:
173174
group = kwargs['group']
174175
if not group.acronym=='none':
175-
addrs.extend(group.role_set.filter(name='secr').values_list('email__address',flat=True))
176+
rts = ReviewTeamSettings.objects.filter(group=group).first()
177+
if rts and rts.secr_mail_alias and len(rts.secr_mail_alias) > 1:
178+
addrs = [rts.secr_mail_alias, ]
179+
else:
180+
addrs.extend(group.role_set.filter(name='secr').values_list('email__address',flat=True))
176181
return addrs
177182

178183
def gather_doc_group_responsible_directors(self, **kwargs):

ietf/review/mailarch.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import urllib
66
import urllib2, contextlib
77
import debug # pyflakes:ignore
8+
import debug # pyflakes:ignore
89

910
from pyquery import PyQuery
1011

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
# -*- coding: utf-8 -*-
2+
# Generated by Django 1.11.16 on 2018-11-03 03:10
3+
from __future__ import unicode_literals
4+
5+
from django.db import migrations, models
6+
7+
8+
class Migration(migrations.Migration):
9+
10+
dependencies = [
11+
('review', '0003_add_notify_ad_when'),
12+
]
13+
14+
operations = [
15+
migrations.AddField(
16+
model_name='reviewteamsettings',
17+
name='secr_mail_alias',
18+
field=models.CharField(blank=True, help_text=b'Email alias for all of the review team secretaries', max_length=255, verbose_name=b'Email alias for all of the review team secretaries'),
19+
),
20+
]

ietf/review/migrations/0004_set_secdir_notify_ad_when.py renamed to ietf/review/migrations/0005_set_secdir_notify_ad_when.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ def reverse(apps, schema_editor):
1515
class Migration(migrations.Migration):
1616

1717
dependencies = [
18-
('review', '0003_add_notify_ad_when'),
18+
('review', '0004_reviewteamsettings_secr_mail_alias'),
1919
]
2020

2121
operations = [

ietf/review/models.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -162,6 +162,7 @@ class ReviewTeamSettings(models.Model):
162162
review_types = models.ManyToManyField(ReviewTypeName, default=get_default_review_types)
163163
review_results = models.ManyToManyField(ReviewResultName, default=get_default_review_results, related_name='reviewteamsettings_review_results_set')
164164
notify_ad_when = models.ManyToManyField(ReviewResultName, related_name='reviewteamsettings_notify_ad_set')
165+
secr_mail_alias = models.CharField(verbose_name="Email alias for all of the review team secretaries", max_length=255, blank=True, help_text="Email alias for all of the review team secretaries")
165166

166167
def __unicode__(self):
167168
return u"%s" % (self.group.acronym,)

ietf/review/utils.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
from ietf.ietfauth.utils import has_role, is_authorized_in_doc_stream
1717
from ietf.review.models import (ReviewRequest, ReviewRequestStateName, ReviewTypeName,
1818
ReviewerSettings, UnavailablePeriod, ReviewWish, NextReviewerInTeam,
19-
ReviewSecretarySettings)
19+
ReviewTeamSettings, ReviewSecretarySettings)
2020
from ietf.utils.mail import send_mail
2121
from ietf.doc.utils import extract_complete_replaces_ancestor_mapping_for_docs
2222

@@ -350,7 +350,11 @@ def extract_email_addresses(objs):
350350
to.add(e)
351351

352352
if notify_secretary:
353-
extract_email_addresses(Role.objects.filter(name="secr", group=review_req.team).distinct())
353+
rts = ReviewTeamSettings.objects.filter(group=review_req.team).first()
354+
if rts and rts.secr_mail_alias and rts.secr_mail_alias.strip() != '':
355+
to.add(rts.secr_mail_alias)
356+
else:
357+
extract_email_addresses(Role.objects.filter(name="secr", group=review_req.team).distinct())
354358
if notify_reviewer:
355359
extract_email_addresses([review_req.reviewer])
356360
if notify_requested_by:

0 commit comments

Comments
 (0)