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: 15746 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:
commit
3b811ecb41
ietf
doc
mailtrigger
review
|
@ -8,6 +8,7 @@ from mock import patch
|
|||
from requests import Response
|
||||
|
||||
|
||||
from django.apps import apps
|
||||
from django.urls import reverse as urlreverse
|
||||
from django.conf import settings
|
||||
|
||||
|
@ -98,6 +99,27 @@ class ReviewTests(TestCase):
|
|||
self.assertTrue('reviewteam3 Early' in outbox[1]['Subject'])
|
||||
self.assertTrue('reviewsecretary3@' in outbox[1]['To'])
|
||||
|
||||
# set the reviewteamsetting for the secretary email alias, then do the post again
|
||||
m = apps.get_model('review', 'ReviewTeamSettings')
|
||||
for row in m.objects.all():
|
||||
if row.group.upcase_acronym == review_team3.upcase_acronym:
|
||||
row.secr_mail_alias = 'reviewsecretary3-alias@example.com'
|
||||
row.save(update_fields=['secr_mail_alias'])
|
||||
|
||||
r = self.client.post(url, {
|
||||
"type": "early",
|
||||
"team": [review_team.pk,review_team3.pk],
|
||||
"deadline": deadline.isoformat(),
|
||||
"requested_rev": "01",
|
||||
"requested_by": Person.objects.get(user__username="ad").pk,
|
||||
"comment": "gZT2iiYqYLKiQHvsgWCcVLdH"
|
||||
})
|
||||
self.assertEqual(r.status_code, 302)
|
||||
|
||||
self.assertEqual(len(outbox),4)
|
||||
self.assertTrue('reviewsecretary@' in outbox[2]['To'])
|
||||
self.assertTrue('reviewsecretary3-alias@' in outbox[3]['To'])
|
||||
|
||||
def test_request_review_of_rfc(self):
|
||||
doc = WgRfcFactory()
|
||||
|
||||
|
|
|
@ -37,7 +37,7 @@ class Migration(migrations.Migration):
|
|||
|
||||
dependencies = [
|
||||
('mailtrigger', '0002_conflrev_changes'),
|
||||
('review', '0003_add_notify_ad_when'),
|
||||
('review', '0004_reviewteamsettings_secr_mail_alias'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
|
|
|
@ -6,6 +6,7 @@ from django.template import Template, Context
|
|||
from email.utils import parseaddr
|
||||
from ietf.utils.mail import formataddr
|
||||
from ietf.person.models import Email
|
||||
from ietf.review.models import ReviewTeamSettings
|
||||
|
||||
import debug # pyflakes:ignore
|
||||
|
||||
|
@ -172,7 +173,11 @@ class Recipient(models.Model):
|
|||
if 'group' in kwargs:
|
||||
group = kwargs['group']
|
||||
if not group.acronym=='none':
|
||||
addrs.extend(group.role_set.filter(name='secr').values_list('email__address',flat=True))
|
||||
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, ]
|
||||
else:
|
||||
addrs.extend(group.role_set.filter(name='secr').values_list('email__address',flat=True))
|
||||
return addrs
|
||||
|
||||
def gather_doc_group_responsible_directors(self, **kwargs):
|
||||
|
|
|
@ -5,6 +5,7 @@ import datetime, tarfile, mailbox, tempfile, hashlib, base64, email.utils
|
|||
import urllib
|
||||
import urllib2, contextlib
|
||||
import debug # pyflakes:ignore
|
||||
import debug # pyflakes:ignore
|
||||
|
||||
from pyquery import PyQuery
|
||||
|
||||
|
|
|
@ -0,0 +1,20 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# Generated by Django 1.11.16 on 2018-11-03 03:10
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('review', '0003_add_notify_ad_when'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='reviewteamsettings',
|
||||
name='secr_mail_alias',
|
||||
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'),
|
||||
),
|
||||
]
|
|
@ -15,7 +15,7 @@ def reverse(apps, schema_editor):
|
|||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('review', '0003_add_notify_ad_when'),
|
||||
('review', '0004_reviewteamsettings_secr_mail_alias'),
|
||||
]
|
||||
|
||||
operations = [
|
|
@ -162,6 +162,7 @@ class ReviewTeamSettings(models.Model):
|
|||
review_types = models.ManyToManyField(ReviewTypeName, default=get_default_review_types)
|
||||
review_results = models.ManyToManyField(ReviewResultName, default=get_default_review_results, related_name='reviewteamsettings_review_results_set')
|
||||
notify_ad_when = models.ManyToManyField(ReviewResultName, related_name='reviewteamsettings_notify_ad_set')
|
||||
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")
|
||||
|
||||
def __unicode__(self):
|
||||
return u"%s" % (self.group.acronym,)
|
||||
|
|
|
@ -16,7 +16,7 @@ from ietf.person.models import Person
|
|||
from ietf.ietfauth.utils import has_role, is_authorized_in_doc_stream
|
||||
from ietf.review.models import (ReviewRequest, ReviewRequestStateName, ReviewTypeName,
|
||||
ReviewerSettings, UnavailablePeriod, ReviewWish, NextReviewerInTeam,
|
||||
ReviewSecretarySettings)
|
||||
ReviewTeamSettings, ReviewSecretarySettings)
|
||||
from ietf.utils.mail import send_mail
|
||||
from ietf.doc.utils import extract_complete_replaces_ancestor_mapping_for_docs
|
||||
|
||||
|
@ -350,7 +350,11 @@ def email_review_request_change(request, review_req, subject, msg, by, notify_se
|
|||
to.add(e)
|
||||
|
||||
if notify_secretary:
|
||||
extract_email_addresses(Role.objects.filter(name="secr", group=review_req.team).distinct())
|
||||
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)
|
||||
else:
|
||||
extract_email_addresses(Role.objects.filter(name="secr", group=review_req.team).distinct())
|
||||
if notify_reviewer:
|
||||
extract_email_addresses([review_req.reviewer])
|
||||
if notify_requested_by:
|
||||
|
|
Loading…
Reference in a new issue