Skip to content

Commit 2aa9743

Browse files
committed
Port SDO reminder emails to new schema, with test
- Legacy-Id: 3357
1 parent 7c9c17c commit 2aa9743

4 files changed

Lines changed: 89 additions & 5 deletions

File tree

ietf/liaisons/mails.py

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
from django.core.urlresolvers import reverse as urlreverse
44

55
from ietf.utils.mail import send_mail_text
6+
from ietf.liaisons.utils import role_persons_with_fixed_email
7+
from redesign.group.models import Role
68

79
def send_liaison_by_email(request, liaison, fake=False):
810
if liaison.is_pending(): # this conditional should definitely be at the caller, not here
@@ -60,3 +62,24 @@ def notify_pending_by_email(request, liaison, fake):
6062
return mail
6163
send_mail_text(request, to_email, from_email, subject, body)
6264

65+
def send_sdo_reminder(sdo):
66+
roles = Role.objects.filter(name="liaiman", group=sdo)
67+
if not roles:
68+
return None
69+
70+
manager_role = roles[0]
71+
72+
subject = 'Request for update of list of authorized individuals'
73+
to_email = manager_role.email.address
74+
name = manager_role.email.get_name()
75+
76+
authorized_list = role_persons_with_fixed_email(sdo, "auth")
77+
body = render_to_string('liaisons/sdo_reminder.txt', dict(
78+
manager_name=name,
79+
sdo_name=sdo.name,
80+
individuals=authorized_list,
81+
))
82+
83+
send_mail_text(None, to_email, settings.LIAISON_UNIVERSAL_FROM, subject, body)
84+
85+
return body

ietf/liaisons/management/commands/remind_update_sdo_list.py

Lines changed: 34 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,9 +38,14 @@ def send_mail_to(self, person, sdo):
3838
return msg
3939

4040
def handle(self, *args, **options):
41-
query = SDOs.objects.all().order_by('pk')
4241
sdo_pk = options.get('sdo_pk', None)
4342
return_output = options.get('return_output', False)
43+
44+
if settings.USE_DB_REDESIGN_PROXY_CLASSES:
45+
msg_list = send_reminders_to_sdos(sdo_pk=sdo_pk)
46+
return msg_list if return_output else None
47+
48+
query = SDOs.objects.all().order_by('pk')
4449
if sdo_pk:
4550
query = query.filter(pk=sdo_pk)
4651

@@ -55,3 +60,31 @@ def handle(self, *args, **options):
5560
msg_list.append(msg)
5661
if return_output:
5762
return msg_list
63+
64+
65+
def send_reminders_to_sdos(sdo_pk=None):
66+
from redesign.group.models import Group
67+
from ietf.liaisons.mails import send_sdo_reminder
68+
69+
sdos = Group.objects.filter(type="sdo").order_by('pk')
70+
if sdo_pk:
71+
sdos = sdos.filter(pk=sdo_pk)
72+
73+
if not sdos:
74+
print "No SDOs found!"
75+
76+
msgs = []
77+
for sdo in sdos:
78+
body = send_sdo_reminder(sdo)
79+
80+
if not body:
81+
msg = u'%05s#: %s has no liaison manager' % (sdo.pk, sdo.name)
82+
else:
83+
msg = u'%05s#: %s mail sent!' % (sdo.pk, sdo.name)
84+
85+
print msg
86+
msgs.append(msg)
87+
88+
return msgs
89+
90+

ietf/liaisons/proxy.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,11 +24,11 @@ def person(self):
2424
#submitted_date = models.DateField(null=True, blank=True)
2525
@property
2626
def submitted_date(self):
27-
return self.submitted.date()
27+
return self.submitted.date() if self.submitted else None
2828
#last_modified_date = models.DateField(null=True, blank=True)
2929
@property
3030
def last_modified_date(self):
31-
return self.modified.date()
31+
return self.modified.date() if self.modified else None
3232
#from_id = models.IntegerField(null=True, blank=True)
3333
@property
3434
def from_id(self):

ietf/liaisons/tests.py

Lines changed: 30 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,19 +35,34 @@ def make_liaison_models():
3535
type_id="sdo",
3636
)
3737

38+
# liaison manager
3839
u = User.objects.create(username="zrk")
3940
p = Person.objects.create(
4041
name="Zrk Brekkk",
4142
ascii="Zrk Brekkk",
4243
user=u)
43-
email = Email.objects.create(
44+
manager = email = Email.objects.create(
4445
address="zrk@ulm.mars",
4546
person=p)
4647
Role.objects.create(
4748
name_id="liaiman",
4849
group=sdo,
4950
email=email)
5051

52+
# authorized individual
53+
u = User.objects.create(username="rkz")
54+
p = Person.objects.create(
55+
name="Rkz Kkkreb",
56+
ascii="Rkz Kkkreb",
57+
user=u)
58+
email = Email.objects.create(
59+
address="rkz@ulm.mars",
60+
person=p)
61+
Role.objects.create(
62+
name_id="auth",
63+
group=sdo,
64+
email=email)
65+
5166
mars_group = Group.objects.get(acronym="mars")
5267

5368
l = LiaisonStatement.objects.create(
@@ -58,7 +73,7 @@ def make_liaison_models():
5873
related_to=None,
5974
from_group=sdo,
6075
from_name=sdo.name,
61-
from_contact=email,
76+
from_contact=manager,
6277
to_group=mars_group,
6378
to_name=mars_group.name,
6479
to_contact="%s@ietf.org" % mars_group.acronym,
@@ -368,6 +383,19 @@ def test_add_outgoing_liaison(self):
368383
l = LiaisonStatement.objects.all().order_by("-id")[0]
369384
self.assertEquals(l.to_group, None)
370385
self.assertEquals(l.to_name, "Mars Institute")
386+
387+
def test_send_sdo_reminder(self):
388+
make_test_data()
389+
liaison = make_liaison_models()
390+
391+
from ietf.liaisons.mails import send_sdo_reminder
392+
393+
mailbox_before = len(mail_outbox)
394+
send_sdo_reminder(Group.objects.filter(type="sdo")[0])
395+
self.assertEquals(len(mail_outbox), mailbox_before + 1)
396+
self.assertTrue("authorized individuals" in mail_outbox[-1]["Subject"])
397+
print mail_outbox[-1]
398+
371399

372400
if not settings.USE_DB_REDESIGN_PROXY_CLASSES:
373401
# the above tests only work with the new schema

0 commit comments

Comments
 (0)