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:
parent
7a1a67fca4
commit
1d7883fc01
|
@ -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
|
|
@ -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):
|
||||
|
|
|
@ -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()
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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'))
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Reference in a new issue