Merged in [15708] and [15730] from housley@vigilsec.com:
Added a mail alias for all review team secretaries. Fixes #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 commit6067dcbfef
Note: SVN reference [15730] has been migrated to Git commitd525ade0b0
This commit is contained in:
parent
3b811ecb41
commit
e024cca8c4
|
@ -4,7 +4,7 @@ from django.db import models
|
|||
from django.template import Template, Context
|
||||
|
||||
from email.utils import parseaddr
|
||||
from ietf.utils.mail import formataddr
|
||||
from ietf.utils.mail import formataddr, get_email_addresses_from_text
|
||||
from ietf.person.models import Email
|
||||
from ietf.review.models import ReviewTeamSettings
|
||||
|
||||
|
@ -60,7 +60,7 @@ class Recipient(models.Model):
|
|||
if self.template:
|
||||
rendering = Template('{%% autoescape off %%}%s{%% endautoescape %%}'%self.template).render(Context(kwargs))
|
||||
if rendering:
|
||||
retval.extend([x.strip() for x in rendering.split(',')])
|
||||
retval.extend( get_email_addresses_from_text(rendering) )
|
||||
|
||||
return clean_duplicates(retval)
|
||||
|
||||
|
@ -175,7 +175,7 @@ class Recipient(models.Model):
|
|||
if not group.acronym=='none':
|
||||
rts = ReviewTeamSettings.objects.filter(group=group).first()
|
||||
if rts and rts.secr_mail_alias and len(rts.secr_mail_alias) > 1:
|
||||
addrs = [rts.secr_mail_alias, ]
|
||||
addrs = get_email_addresses_from_text(rts.secr_mail_alias)
|
||||
else:
|
||||
addrs.extend(group.role_set.filter(name='secr').values_list('email__address',flat=True))
|
||||
return addrs
|
||||
|
|
|
@ -17,7 +17,7 @@ from ietf.ietfauth.utils import has_role, is_authorized_in_doc_stream
|
|||
from ietf.review.models import (ReviewRequest, ReviewRequestStateName, ReviewTypeName,
|
||||
ReviewerSettings, UnavailablePeriod, ReviewWish, NextReviewerInTeam,
|
||||
ReviewTeamSettings, ReviewSecretarySettings)
|
||||
from ietf.utils.mail import send_mail
|
||||
from ietf.utils.mail import send_mail, get_email_addresses_from_text
|
||||
from ietf.doc.utils import extract_complete_replaces_ancestor_mapping_for_docs
|
||||
|
||||
def active_review_teams():
|
||||
|
@ -352,7 +352,8 @@ def email_review_request_change(request, review_req, subject, msg, by, notify_se
|
|||
if notify_secretary:
|
||||
rts = ReviewTeamSettings.objects.filter(group=review_req.team).first()
|
||||
if rts and rts.secr_mail_alias and rts.secr_mail_alias.strip() != '':
|
||||
to.add(rts.secr_mail_alias)
|
||||
for addr in get_email_addresses_from_text(rts.secr_mail_alias):
|
||||
to.add(addr)
|
||||
else:
|
||||
extract_email_addresses(Role.objects.filter(name="secr", group=review_req.team).distinct())
|
||||
if notify_reviewer:
|
||||
|
|
|
@ -448,3 +448,17 @@ def is_valid_email(address):
|
|||
return True
|
||||
except ValidationError:
|
||||
return False
|
||||
|
||||
def get_email_addresses_from_text(text):
|
||||
"""
|
||||
|
||||
Expects a string with one or more email addresses, each in 2822-compatible
|
||||
form, separated by comma (as in an RFC2822, Section 3.4 address-list)
|
||||
Could be as simple as 'foo@example.com' or as complex as 'Some Person
|
||||
<some.person@example.com>, "list@ietf.org"\n\t<list@ietf.org>'.
|
||||
|
||||
Returns a list of properly formatted email address strings.
|
||||
|
||||
"""
|
||||
return [ formataddr(e) for e in getaddresses([text, ]) ]
|
||||
|
||||
|
|
Loading…
Reference in a new issue