Port SDO reminder emails to new schema, with test

- Legacy-Id: 3357
This commit is contained in:
Ole Laursen 2011-08-23 14:10:53 +00:00
parent 7c9c17c9cf
commit 2aa97434fb
4 changed files with 89 additions and 5 deletions

View file

@ -3,6 +3,8 @@ from django.template.loader import render_to_string
from django.core.urlresolvers import reverse as urlreverse
from ietf.utils.mail import send_mail_text
from ietf.liaisons.utils import role_persons_with_fixed_email
from redesign.group.models import Role
def send_liaison_by_email(request, liaison, fake=False):
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):
return mail
send_mail_text(request, to_email, from_email, subject, body)
def send_sdo_reminder(sdo):
roles = Role.objects.filter(name="liaiman", group=sdo)
if not roles:
return None
manager_role = roles[0]
subject = 'Request for update of list of authorized individuals'
to_email = manager_role.email.address
name = manager_role.email.get_name()
authorized_list = role_persons_with_fixed_email(sdo, "auth")
body = render_to_string('liaisons/sdo_reminder.txt', dict(
manager_name=name,
sdo_name=sdo.name,
individuals=authorized_list,
))
send_mail_text(None, to_email, settings.LIAISON_UNIVERSAL_FROM, subject, body)
return body

View file

@ -38,9 +38,14 @@ class Command(BaseCommand):
return msg
def handle(self, *args, **options):
query = SDOs.objects.all().order_by('pk')
sdo_pk = options.get('sdo_pk', None)
return_output = options.get('return_output', False)
if settings.USE_DB_REDESIGN_PROXY_CLASSES:
msg_list = send_reminders_to_sdos(sdo_pk=sdo_pk)
return msg_list if return_output else None
query = SDOs.objects.all().order_by('pk')
if sdo_pk:
query = query.filter(pk=sdo_pk)
@ -55,3 +60,31 @@ class Command(BaseCommand):
msg_list.append(msg)
if return_output:
return msg_list
def send_reminders_to_sdos(sdo_pk=None):
from redesign.group.models import Group
from ietf.liaisons.mails import send_sdo_reminder
sdos = Group.objects.filter(type="sdo").order_by('pk')
if sdo_pk:
sdos = sdos.filter(pk=sdo_pk)
if not sdos:
print "No SDOs found!"
msgs = []
for sdo in sdos:
body = send_sdo_reminder(sdo)
if not body:
msg = u'%05s#: %s has no liaison manager' % (sdo.pk, sdo.name)
else:
msg = u'%05s#: %s mail sent!' % (sdo.pk, sdo.name)
print msg
msgs.append(msg)
return msgs

View file

@ -24,11 +24,11 @@ class LiaisonDetailProxy(LiaisonStatement):
#submitted_date = models.DateField(null=True, blank=True)
@property
def submitted_date(self):
return self.submitted.date()
return self.submitted.date() if self.submitted else None
#last_modified_date = models.DateField(null=True, blank=True)
@property
def last_modified_date(self):
return self.modified.date()
return self.modified.date() if self.modified else None
#from_id = models.IntegerField(null=True, blank=True)
@property
def from_id(self):

View file

@ -35,12 +35,13 @@ def make_liaison_models():
type_id="sdo",
)
# liaison manager
u = User.objects.create(username="zrk")
p = Person.objects.create(
name="Zrk Brekkk",
ascii="Zrk Brekkk",
user=u)
email = Email.objects.create(
manager = email = Email.objects.create(
address="zrk@ulm.mars",
person=p)
Role.objects.create(
@ -48,6 +49,20 @@ def make_liaison_models():
group=sdo,
email=email)
# authorized individual
u = User.objects.create(username="rkz")
p = Person.objects.create(
name="Rkz Kkkreb",
ascii="Rkz Kkkreb",
user=u)
email = Email.objects.create(
address="rkz@ulm.mars",
person=p)
Role.objects.create(
name_id="auth",
group=sdo,
email=email)
mars_group = Group.objects.get(acronym="mars")
l = LiaisonStatement.objects.create(
@ -58,7 +73,7 @@ def make_liaison_models():
related_to=None,
from_group=sdo,
from_name=sdo.name,
from_contact=email,
from_contact=manager,
to_group=mars_group,
to_name=mars_group.name,
to_contact="%s@ietf.org" % mars_group.acronym,
@ -368,6 +383,19 @@ class LiaisonManagementTestCase(django.test.TestCase):
l = LiaisonStatement.objects.all().order_by("-id")[0]
self.assertEquals(l.to_group, None)
self.assertEquals(l.to_name, "Mars Institute")
def test_send_sdo_reminder(self):
make_test_data()
liaison = make_liaison_models()
from ietf.liaisons.mails import send_sdo_reminder
mailbox_before = len(mail_outbox)
send_sdo_reminder(Group.objects.filter(type="sdo")[0])
self.assertEquals(len(mail_outbox), mailbox_before + 1)
self.assertTrue("authorized individuals" in mail_outbox[-1]["Subject"])
print mail_outbox[-1]
if not settings.USE_DB_REDESIGN_PROXY_CLASSES:
# the above tests only work with the new schema