Port SDO reminder emails to new schema, with test
- Legacy-Id: 3357
This commit is contained in:
parent
7c9c17c9cf
commit
2aa97434fb
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
||||
|
||||
|
|
|
@ -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):
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue