From f55195e3d60dcbc40975565f554d86d5bdceb4f0 Mon Sep 17 00:00:00 2001 From: Russ Housley Date: Sat, 9 Mar 2013 16:49:38 +0000 Subject: [PATCH] Send email to statements@ietf.org when a pending liaison statement gets queued. - Legacy-Id: 5511 --- ietf/liaisons/mails.py | 22 ++++++++++++++-------- ietf/liaisons/proxy.py | 6 ++++++ ietf/liaisons/views.py | 5 ++++- ietf/utils/mail.py | 4 ++-- 4 files changed, 26 insertions(+), 11 deletions(-) diff --git a/ietf/liaisons/mails.py b/ietf/liaisons/mails.py index 0572cc4b4..db80b9d3c 100644 --- a/ietf/liaisons/mails.py +++ b/ietf/liaisons/mails.py @@ -30,14 +30,19 @@ def send_liaison_by_email(request, liaison, fake=False): send_mail_text(request, to_email, from_email, subject, body, cc=", ".join(cc), bcc=", ".join(bcc)) def notify_pending_by_email(request, liaison, fake): - from ietf.liaisons.utils import IETFHM - from_entity = IETFHM.get_entity_by_key(liaison.from_raw_code) - if not from_entity: - return None - to_email = [] - for person in from_entity.can_approve(): - to_email.append('%s <%s>' % person.email()) + # Broken: this does not find the list of approvers for the sending body + # For now, we are sending to statements@ietf.org so the Secretariat can nudge + # Bug 880: http://trac.tools.ietf.org/tools/ietfdb/ticket/880 + # + # from ietf.liaisons.utils import IETFHM + # + # from_entity = IETFHM.get_entity_by_key(liaison.from_raw_code) + # if not from_entity: + # return None + # to_email = [] + # for person in from_entity.can_approve(): + # to_email.append('%s <%s>' % person.email()) subject = u'New Liaison Statement, "%s" needs your approval' % (liaison.title) from_email = settings.LIAISON_UNIVERSAL_FROM body = render_to_string('liaisons/pending_liaison_mail.txt', dict( @@ -45,7 +50,8 @@ def notify_pending_by_email(request, liaison, fake): url=settings.IDTRACKER_BASE_URL + urlreverse("liaison_approval_detail", kwargs=dict(object_id=liaison.pk)), referenced_url=settings.IDTRACKER_BASE_URL + urlreverse("liaison_detail", kwargs=dict(object_id=liaison.related_to.pk)) if liaison.related_to else None, )) - send_mail_text(request, to_email, from_email, subject, body) + # send_mail_text(request, to_email, from_email, subject, body) + send_mail_text(request, ['statements@ietf.org'], from_email, subject, body) def send_sdo_reminder(sdo): roles = Role.objects.filter(name="liaiman", group=sdo) diff --git a/ietf/liaisons/proxy.py b/ietf/liaisons/proxy.py index d92120330..9e1ca61bc 100644 --- a/ietf/liaisons/proxy.py +++ b/ietf/liaisons/proxy.py @@ -148,6 +148,12 @@ class LiaisonDetailProxy(LiaisonStatement): # we don't have a request so just pass None for the time being return send_liaison_by_email(None, self, fake) + def notify_pending_by_email(self, fake=False): + # grab this from module instead of stuffing in on the model + from ietf.liaisons.mails import notify_pending_by_email + # we don't have a request so just pass None for the time being + return notify_pending_by_email(None, self, fake) + def is_pending(self): return not self.approved diff --git a/ietf/liaisons/views.py b/ietf/liaisons/views.py index 7425d49e3..b935d86a9 100644 --- a/ietf/liaisons/views.py +++ b/ietf/liaisons/views.py @@ -33,7 +33,10 @@ def add_liaison(request, liaison=None): if form.is_valid(): liaison = form.save() if request.POST.get('send', None): - liaison.send_by_email() + if liaison.is_pending(): + liaison.notify_pending_by_email() + else: + liaison.send_by_email() return HttpResponseRedirect(reverse('liaison_list')) else: form = liaison_form_factory(request, liaison=liaison) diff --git a/ietf/utils/mail.py b/ietf/utils/mail.py index e78bd7128..de910ed23 100644 --- a/ietf/utils/mail.py +++ b/ietf/utils/mail.py @@ -65,8 +65,8 @@ def send_smtp(msg, bcc=None): log("SMTP server: %s" % repr(server)) #if settings.DEBUG: # server.set_debuglevel(1) - code, msg = server.connect(settings.EMAIL_HOST, settings.EMAIL_PORT) - log("SMTP connect: code: %s; msg: %s" % (code, msg)) + code, conmsg = server.connect(settings.EMAIL_HOST, settings.EMAIL_PORT) + log("SMTP connect: code: %s; msg: %s" % (code, conmsg)) if settings.EMAIL_HOST_USER and settings.EMAIL_HOST_PASSWORD: server.ehlo() if 'starttls' not in server.esmtp_features: