Patch from yaco to avoid resetting from field. Gave the secretarait the ability to approve any unapproved liaison. Changed all the email code to use ietf.utils.mail

- Legacy-Id: 4761
This commit is contained in:
Robert Sparks 2012-08-14 21:37:59 +00:00
parent 7a1a67fca4
commit 1d7883fc01
6 changed files with 61 additions and 103 deletions

View file

@ -1,26 +0,0 @@
from django.core.mail import EmailMessage
# FIXME: this is not using the ietf mail stuff, which it really should
# - this code should be DELETED
class IETFEmailMessage(EmailMessage):
def __init__(self, *args, **kwargs):
cc = kwargs.pop('cc', [])
if cc:
assert isinstance(cc, (list, tuple)), '"cc" argument must be a list or tuple'
self.cc = list(cc)
else:
self.cc = []
super(IETFEmailMessage, self).__init__(*args, **kwargs)
def message(self):
msg = super(IETFEmailMessage, self).message()
if self.cc:
msg['Cc'] = ', '.join(self.cc)
if self.bcc:
msg['Bcc'] = ', '.join(self.bcc)
return msg
def recipients(self):
return self.to + self.cc + self.bcc

View file

@ -26,17 +26,6 @@ def send_liaison_by_email(request, liaison, fake=False):
url=settings.IDTRACKER_BASE_URL + urlreverse("liaison_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,
))
if fake:
# rather than this fake stuff, it's probably better to start a
# debug SMTP server as explained in the Django docs
from ietf.liaisons.mail import IETFEmailMessage
mail = IETFEmailMessage(subject=subject,
to=to_email,
from_email=from_email,
cc = cc,
bcc = bcc,
body = body)
return mail
send_mail_text(request, to_email, from_email, subject, body, cc=", ".join(cc), bcc=", ".join(bcc))
@ -56,12 +45,6 @@ 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,
))
if fake:
mail = IETFEmailMessage(subject=subject,
to=to_email,
from_email=from_email,
body = body)
return mail
send_mail_text(request, to_email, from_email, subject, body)
def send_sdo_reminder(sdo):

View file

@ -6,7 +6,8 @@ from django.template.loader import render_to_string
from django.core.urlresolvers import reverse as urlreverse
from ietf.liaisons.models import LiaisonDetail
from ietf.liaisons.mail import IETFEmailMessage
#from ietf.liaisons.mail import IETFEmailMessage
from ietf.utils.mail import send_mail_text
PREVIOUS_DAYS = {
@ -44,17 +45,20 @@ class Command(BaseCommand):
'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,
})
mail = IETFEmailMessage(subject=subject,
to=to_email,
from_email=from_email,
cc=cc,
bcc=bcc,
body=body)
if not settings.DEBUG:
mail.send()
print 'Liaison %05s#: Deadline reminder Sent!' % liaison.pk
else:
print 'Liaison %05s#: Deadline reminder Not Sent because in DEBUG mode!' % liaison.pk
send_mail_text(context=None,to=to_email,frm=from_email,cc=cc,subject=subject,bcc=bcc,txt=body)
print 'Liaison %05s#: Deadline reminder Sent!' % liaison.pk
#mail = IETFEmailMessage(subject=subject,
# to=to_email,
# from_email=from_email,
# cc=cc,
# bcc=bcc,
# body=body)
#if not settings.DEBUG:
# mail.send()
# print 'Liaison %05s#: Deadline reminder Sent!' % liaison.pk
#else:
# print 'Liaison %05s#: Deadline reminder Not Sent because in DEBUG mode!' % liaison.pk
def handle(self, *args, **options):
today = datetime.date.today()

View file

@ -7,7 +7,8 @@ from django.template.loader import render_to_string
from django.contrib.auth.models import User
from django.core.urlresolvers import reverse as urlreverse
from ietf.idtracker.models import Acronym, PersonOrOrgInfo, Area, IESGLogin
from ietf.liaisons.mail import IETFEmailMessage
#from ietf.liaisons.mail import IETFEmailMessage
from ietf.utils.mail import send_mail_text
from ietf.ietfauth.models import LegacyLiaisonUser
from ietf.utils.admin import admin_link
@ -147,13 +148,14 @@ class LiaisonDetail(models.Model):
'url': settings.IDTRACKER_BASE_URL + urlreverse("liaison_approval_detail", kwargs=dict(object_id=self.pk)),
'referenced_url': settings.IDTRACKER_BASE_URL + urlreverse("liaison_detail", kwargs=dict(object_id=self.related_to.pk)) if self.related_to else None,
})
mail = IETFEmailMessage(subject=subject,
to=to_email,
from_email=from_email,
body = body)
if not fake:
mail.send()
return mail
send_mail_text(context=None, to=to_email, frm=from_email, subject=subject, txt = body)
#mail = IETFEmailMessage(subject=subject,
# to=to_email,
# from_email=from_email,
# body = body)
#if not fake:
# mail.send()
#return mail
def send_by_email(self, fake=False):
if self.is_pending():
@ -172,15 +174,16 @@ class LiaisonDetail(models.Model):
'url': settings.IDTRACKER_BASE_URL + urlreverse("liaison_detail", kwargs=dict(object_id=self.pk)),
'referenced_url': settings.IDTRACKER_BASE_URL + urlreverse("liaison_detail", kwargs=dict(object_id=self.related_to.pk)) if self.related_to else None,
})
mail = IETFEmailMessage(subject=subject,
to=to_email,
from_email=from_email,
cc = cc,
bcc = bcc,
body = body)
if not fake:
mail.send()
return mail
send_mail_text(context=None,to=to_email,frm=from_email,subject=subject,txt=body,cc=cc,bcc=bcc)
#mail = IETFEmailMessage(subject=subject,
# to=to_email,
# from_email=from_email,
# cc = cc,
# bcc = bcc,
# body = body)
#if not fake:
# mail.send()
#return mail
def is_pending(self):
return bool(self.approval and not self.approval.approved)

View file

@ -33,10 +33,7 @@ def add_liaison(request, liaison=None):
if form.is_valid():
liaison = form.save()
if request.POST.get('send', None):
if not settings.DEBUG:
liaison.send_by_email()
else:
return _fake_email_view(request, liaison)
liaison.send_by_email()
return HttpResponseRedirect(reverse('liaison_list'))
else:
form = liaison_form_factory(request, liaison=liaison)
@ -89,14 +86,6 @@ def get_info(request):
return HttpResponse(json_result, mimetype='text/javascript')
def _fake_email_view(request, liaison):
mail = liaison.send_by_email(fake=True)
return render_to_response('liaisons/liaison_mail_detail.html',
{'mail': mail,
'message': mail.message(),
'liaison': liaison},
context_instance=RequestContext(request))
if settings.USE_DB_REDESIGN_PROXY_CLASSES:
def approvable_liaison_statements(group_codes):
# this is a bit complicated because IETFHM encodes the
@ -160,12 +149,15 @@ def liaison_list(request):
@can_submit_liaison
def liaison_approval_list(request):
person = get_person_for_user(request.user)
approval_codes = IETFHM.get_all_can_approve_codes(person)
if settings.USE_DB_REDESIGN_PROXY_CLASSES:
to_approve = approvable_liaison_statements(approval_codes).order_by("-submitted")
if is_secretariat(request.user):
to_approve = LiaisonDetail.objects.filter(approved=None).order_by("-submitted")
else:
to_approve = LiaisonDetail.objects.filter(approval__isnull=False, approval__approved=False, from_raw_code__in=approval_codes).order_by("-submitted_date")
person = get_person_for_user(request.user)
approval_codes = IETFHM.get_all_can_approve_codes(person)
if settings.USE_DB_REDESIGN_PROXY_CLASSES:
to_approve = approvable_liaison_statements(approval_codes).order_by("-submitted")
else:
to_approve = LiaisonDetail.objects.filter(approval__isnull=False, approval__approved=False, from_raw_code__in=approval_codes).order_by("-submitted_date")
return object_list(request, to_approve,
allow_empty=True,
@ -175,12 +167,15 @@ def liaison_approval_list(request):
@can_submit_liaison
def liaison_approval_detail(request, object_id):
person = get_person_for_user(request.user)
approval_codes = IETFHM.get_all_can_approve_codes(person)
if settings.USE_DB_REDESIGN_PROXY_CLASSES:
to_approve = approvable_liaison_statements(approval_codes).order_by("-submitted")
if is_secretariat(request.user):
to_approve = LiaisonDetail.objects.filter(approved=None).order_by("-submitted")
else:
to_approve = LiaisonDetail.objects.filter(approval__isnull=False, approval__approved=False, from_raw_code__in=approval_codes).order_by("-submitted_date")
person = get_person_for_user(request.user)
approval_codes = IETFHM.get_all_can_approve_codes(person)
if settings.USE_DB_REDESIGN_PROXY_CLASSES:
to_approve = approvable_liaison_statements(approval_codes).order_by("-submitted")
else:
to_approve = LiaisonDetail.objects.filter(approval__isnull=False, approval__approved=False, from_raw_code__in=approval_codes).order_by("-submitted_date")
if request.method=='POST' and request.POST.get('do_approval', False):
try:
@ -197,10 +192,7 @@ def liaison_approval_detail(request, object_id):
else:
approval.approved=True
approval.save()
if not settings.DEBUG:
liaison.send_by_email()
else:
return _fake_email_view(request, liaison)
liaison.send_by_email()
except LiaisonDetail.DoesNotExist:
pass
return HttpResponseRedirect(reverse('liaison_list'))

View file

@ -209,7 +209,7 @@
updateReplyTo();
};
var updateInfo = function(first_time) {
var updateInfo = function(first_time, sender) {
var entity = organization;
var to_entity = from;
if (!entity.is('select') || !to_entity.is('select')) {
@ -232,7 +232,9 @@
render_mails_into(poc, response.poc, true);
toggleApproval(response.needs_approval);
checkPostOnly(response.post_only);
userSelect(response.full_list);
if (sender == 'from') {
userSelect(response.full_list);
}
}
}
});
@ -330,7 +332,7 @@
var checkFrom = function(first_time) {
var reduce_options = form.find('.reducedToOptions');
if (!reduce_options.length) {
updateInfo(first_time);
updateInfo(first_time, 'from');
return;
}
var to_select = organization;
@ -351,7 +353,7 @@
to_select.find('optgroup').show();
to_select.find('option').show();
}
updateInfo(first_time);
updateInfo(first_time, 'from');
};
var checkSubmissionDate = function() {
@ -366,7 +368,7 @@
};
var initTriggers = function() {
organization.change(function() {updateInfo(false);});
organization.change(function() {updateInfo(false, 'to');});
organization.change(checkOtherSDO);
from.change(function() {checkFrom(false);});
reply.keyup(updateFrom);