Skip to content

Commit e024cca

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: 15747 Note: SVN reference [15708] has been migrated to Git commit 6067dcb Note: SVN reference [15730] has been migrated to Git commit d525ade
1 parent 3b811ec commit e024cca

3 files changed

Lines changed: 20 additions & 5 deletions

File tree

ietf/mailtrigger/models.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
from django.template import Template, Context
55

66
from email.utils import parseaddr
7-
from ietf.utils.mail import formataddr
7+
from ietf.utils.mail import formataddr, get_email_addresses_from_text
88
from ietf.person.models import Email
99
from ietf.review.models import ReviewTeamSettings
1010

@@ -60,7 +60,7 @@ def gather(self, **kwargs):
6060
if self.template:
6161
rendering = Template('{%% autoescape off %%}%s{%% endautoescape %%}'%self.template).render(Context(kwargs))
6262
if rendering:
63-
retval.extend([x.strip() for x in rendering.split(',')])
63+
retval.extend( get_email_addresses_from_text(rendering) )
6464

6565
return clean_duplicates(retval)
6666

@@ -175,7 +175,7 @@ def gather_group_secretaries(self, **kwargs):
175175
if not group.acronym=='none':
176176
rts = ReviewTeamSettings.objects.filter(group=group).first()
177177
if rts and rts.secr_mail_alias and len(rts.secr_mail_alias) > 1:
178-
addrs = [rts.secr_mail_alias, ]
178+
addrs = get_email_addresses_from_text(rts.secr_mail_alias)
179179
else:
180180
addrs.extend(group.role_set.filter(name='secr').values_list('email__address',flat=True))
181181
return addrs

ietf/review/utils.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
from ietf.review.models import (ReviewRequest, ReviewRequestStateName, ReviewTypeName,
1818
ReviewerSettings, UnavailablePeriod, ReviewWish, NextReviewerInTeam,
1919
ReviewTeamSettings, ReviewSecretarySettings)
20-
from ietf.utils.mail import send_mail
20+
from ietf.utils.mail import send_mail, get_email_addresses_from_text
2121
from ietf.doc.utils import extract_complete_replaces_ancestor_mapping_for_docs
2222

2323
def active_review_teams():
@@ -352,7 +352,8 @@ def extract_email_addresses(objs):
352352
if notify_secretary:
353353
rts = ReviewTeamSettings.objects.filter(group=review_req.team).first()
354354
if rts and rts.secr_mail_alias and rts.secr_mail_alias.strip() != '':
355-
to.add(rts.secr_mail_alias)
355+
for addr in get_email_addresses_from_text(rts.secr_mail_alias):
356+
to.add(addr)
356357
else:
357358
extract_email_addresses(Role.objects.filter(name="secr", group=review_req.team).distinct())
358359
if notify_reviewer:

ietf/utils/mail.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -448,3 +448,17 @@ def is_valid_email(address):
448448
return True
449449
except ValidationError:
450450
return False
451+
452+
def get_email_addresses_from_text(text):
453+
"""
454+
455+
Expects a string with one or more email addresses, each in 2822-compatible
456+
form, separated by comma (as in an RFC2822, Section 3.4 address-list)
457+
Could be as simple as 'foo@example.com' or as complex as 'Some Person
458+
<some.person@example.com>, "list@ietf.org"\n\t<list@ietf.org>'.
459+
460+
Returns a list of properly formatted email address strings.
461+
462+
"""
463+
return [ formataddr(e) for e in getaddresses([text, ]) ]
464+

0 commit comments

Comments
 (0)