mailtoken becomes mailtrigger

- Legacy-Id: 10090
This commit is contained in:
Robert Sparks 2015-09-17 20:03:45 +00:00
parent e03bdbabe4
commit f5b6465e81
43 changed files with 261 additions and 261 deletions

View file

@ -10,7 +10,7 @@ from ietf.doc.models import Document, DocEvent, State, save_document_in_history,
from ietf.person.models import Person
from ietf.meeting.models import Meeting
from ietf.doc.utils import add_state_change_event
from ietf.mailtoken.utils import gather_address_lists
from ietf.mailtrigger.utils import gather_address_lists
def expirable_draft(draft):

View file

@ -14,10 +14,10 @@ from ietf.doc.models import WriteupDocEvent, LastCallDocEvent, DocAlias, Consens
from ietf.doc.utils import needed_ballot_positions, get_document_content
from ietf.group.models import Role
from ietf.doc.models import Document
from ietf.mailtoken.utils import gather_address_lists
from ietf.mailtrigger.utils import gather_address_lists
def email_state_changed(request, doc, text, mailtoken_id=None):
(to,cc) = gather_address_lists(mailtoken_id or 'doc_state_edited',doc=doc)
def email_state_changed(request, doc, text, mailtrigger_id=None):
(to,cc) = gather_address_lists(mailtrigger_id or 'doc_state_edited',doc=doc)
if not to:
return

View file

@ -152,7 +152,7 @@ class EditPositionTests(TestCase):
# send
mailbox_before = len(outbox)
r = self.client.post(url, dict(extra_cc="test298347@example.com", cc_tokens=['doc_notify','doc_group_chairs']))
r = self.client.post(url, dict(extra_cc="test298347@example.com", cc_choices=['doc_notify','doc_group_chairs']))
self.assertEqual(r.status_code, 302)
self.assertEqual(len(outbox), mailbox_before + 1)
@ -163,11 +163,11 @@ class EditPositionTests(TestCase):
self.assertTrue("clearer title" in str(m))
self.assertTrue("Test!" in str(m))
self.assertTrue("iesg@" in m['To'])
# cc_token doc_group_chairs
# cc_choice doc_group_chairs
self.assertTrue("mars-chairs@" in m['Cc'])
# cc_token doc_notify
# cc_choice doc_notify
self.assertTrue("somebody@example.com" in m['Cc'])
# cc_token doc_group_email_list was not selected
# cc_choice doc_group_email_list was not selected
self.assertFalse(draft.group.list_email in m['Cc'])
# extra-cc
self.assertTrue("test298347@example.com" in m['Cc'])

View file

@ -18,7 +18,7 @@ from ietf.group.models import Role
from ietf.ietfauth.utils import has_role
from ietf.utils import draft, markup_txt
from ietf.utils.mail import send_mail
from ietf.mailtoken.utils import gather_address_lists
from ietf.mailtrigger.utils import gather_address_lists
#TODO FIXME - it would be better if this lived in ietf/doc/mails.py, but there's
# an import order issue to work out.
@ -524,7 +524,7 @@ def check_common_doc_name_rules(name):
raise ValidationError(errors)
def get_initial_notify(doc,extra=None):
# With the mailtoken based changes, a document's notify should start empty
# With the mailtrigger based changes, a document's notify should start empty
receivers = []
if extra:

View file

@ -6,7 +6,7 @@ from django.conf import settings
from ietf.doc.models import NewRevisionDocEvent, WriteupDocEvent
from ietf.utils.history import find_history_active_at
from ietf.utils.mail import parse_preformatted
from ietf.mailtoken.utils import gather_address_lists
from ietf.mailtrigger.utils import gather_address_lists
def charter_name_for_group(group):
if group.type_id == "rg":

View file

@ -27,8 +27,8 @@ from ietf.message.utils import infer_message
from ietf.name.models import BallotPositionName
from ietf.person.models import Person
from ietf.utils.mail import send_mail_text, send_mail_preformatted
from ietf.mailtoken.utils import gather_address_lists
from ietf.mailtoken.forms import CcSelectForm
from ietf.mailtrigger.utils import gather_address_lists
from ietf.mailtrigger.forms import CcSelectForm
BALLOT_CHOICES = (("yes", "Yes"),
("noobj", "No Objection"),
@ -289,7 +289,7 @@ def send_ballot_comment(request, name, ballot_id):
if request.method == 'POST':
cc = []
cc_select_form = CcSelectForm(data=request.POST,mailtoken_slug='ballot_saved',mailtoken_context={'doc':doc})
cc_select_form = CcSelectForm(data=request.POST,mailtrigger_slug='ballot_saved',mailtrigger_context={'doc':doc})
if cc_select_form.is_valid():
cc.extend(cc_select_form.get_selected_addresses())
extra_cc = [x.strip() for x in request.POST.get("extra_cc","").split(',') if x.strip()]
@ -302,7 +302,7 @@ def send_ballot_comment(request, name, ballot_id):
else:
cc_select_form = CcSelectForm(mailtoken_slug='ballot_saved',mailtoken_context={'doc':doc})
cc_select_form = CcSelectForm(mailtrigger_slug='ballot_saved',mailtrigger_context={'doc':doc})
return render_to_response('doc/ballot/send_ballot_comment.html',
dict(doc=doc,

View file

@ -20,7 +20,7 @@ from ietf.ietfauth.utils import has_role, role_required, is_authorized_in_doc_st
from ietf.person.models import Person
from ietf.utils.mail import send_mail_preformatted
from ietf.utils.textupload import get_cleaned_text_file_content
from ietf.mailtoken.utils import gather_address_lists
from ietf.mailtrigger.utils import gather_address_lists
class ChangeStateForm(forms.Form):
review_state = forms.ModelChoiceField(State.objects.filter(used=True, type="conflrev"), label="Conflict review state", empty_label=None, required=True)

View file

@ -59,7 +59,7 @@ from ietf.person.models import Email
from ietf.utils.history import find_history_active_at
from ietf.doc.forms import TelechatForm, NotifyForm
from ietf.doc.mails import email_comment
from ietf.mailtoken.utils import gather_relevant_expansions
from ietf.mailtrigger.utils import gather_relevant_expansions
def render_document_top(request, doc, tab, name):
tabs = []

View file

@ -38,7 +38,7 @@ from ietf.person.models import Person, Email
from ietf.secr.lib.template import jsonapi
from ietf.utils.mail import send_mail, send_mail_message
from ietf.utils.textupload import get_cleaned_text_file_content
from ietf.mailtoken.utils import gather_address_lists
from ietf.mailtrigger.utils import gather_address_lists
class ChangeStateForm(forms.Form):
state = forms.ModelChoiceField(State.objects.filter(used=True, type="draft-iesg"), empty_label=None, required=True)

View file

@ -22,7 +22,7 @@ from ietf.name.models import DocRelationshipName, StdLevelName
from ietf.person.models import Person
from ietf.utils.mail import send_mail_preformatted
from ietf.utils.textupload import get_cleaned_text_file_content
from ietf.mailtoken.utils import gather_address_lists
from ietf.mailtrigger.utils import gather_address_lists
class ChangeStateForm(forms.Form):
new_state = forms.ModelChoiceField(State.objects.filter(type="statchg", used=True), label="Status Change Evaluation State", empty_label=None, required=True)

View file

@ -57,7 +57,7 @@ from ietf.group.utils import get_charter_text, can_manage_group_type, milestone_
from ietf.group.utils import can_manage_materials, get_group_or_404
from ietf.utils.pipe import pipe
from ietf.settings import MAILING_LIST_INFO_URL
from ietf.mailtoken.utils import gather_relevant_expansions
from ietf.mailtrigger.utils import gather_relevant_expansions
def roles(group, role_name):
return Role.objects.filter(group=group, name=role_name).select_related("email", "person")

View file

@ -12,10 +12,10 @@ from django.core.urlresolvers import reverse as urlreverse
from ietf.utils.mail import send_mail, send_mail_text
from ietf.group.models import Group
from ietf.group.utils import milestone_reviewer_for_group_type
from ietf.mailtoken.utils import gather_address_lists
from ietf.mailtrigger.utils import gather_address_lists
def email_admin_re_charter(request, group, subject, text, mailtoken):
(to,cc) = gather_address_lists(mailtoken,group=group)
def email_admin_re_charter(request, group, subject, text, mailtrigger):
(to,cc) = gather_address_lists(mailtrigger,group=group)
full_subject = u"Regarding %s %s: %s" % (group.type.name, group.acronym, subject)
text = strip_tags(text)

View file

@ -11,7 +11,7 @@ from ietf.ipr.models import IprEvent
from ietf.message.models import Message
from ietf.person.models import Person
from ietf.utils.log import log
from ietf.mailtoken.utils import get_base_ipr_request_address
from ietf.mailtrigger.utils import get_base_ipr_request_address
# ----------------------------------------------------------------
# Date Functions
@ -129,7 +129,7 @@ def get_update_submitter_emails(ipr):
else:
email_to_iprs[email] = [related.target]
# TODO: This has not been converted to use mailtoken. It is complicated.
# TODO: This has not been converted to use mailtrigger. It is complicated.
# When converting it, it will need something like ipr_submitter_ietfer_or_holder perhaps
for email in email_to_iprs:
context = dict(

View file

@ -15,7 +15,7 @@ from ietf.message.models import Message
from ietf.utils.test_utils import TestCase, login_testing_unauthorized
from ietf.utils.test_data import make_test_data
from ietf.utils.mail import outbox, empty_outbox
from ietf.mailtoken.utils import gather_address_lists
from ietf.mailtrigger.utils import gather_address_lists
class IprTests(TestCase):

View file

@ -34,7 +34,7 @@ from ietf.person.models import Person
from ietf.secr.utils.document import get_rfc_num, is_draft
from ietf.utils.draft_search import normalize_draftname
from ietf.utils.mail import send_mail, send_mail_message
from ietf.mailtoken.utils import gather_address_lists
from ietf.mailtrigger.utils import gather_address_lists
# ----------------------------------------------------------------
# Globals

View file

@ -7,7 +7,7 @@ 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 ietf.group.models import Role
from ietf.mailtoken.utils import gather_address_lists
from ietf.mailtrigger.utils import gather_address_lists
def send_liaison_by_email(request, liaison):
subject = u'New Liaison Statement, "%s"' % (liaison.title)

View file

@ -1,11 +0,0 @@
from django.conf.urls import patterns, url
from django.views.generic import RedirectView
from django.core.urlresolvers import reverse_lazy
urlpatterns = patterns('ietf.mailtoken.views',
url(r'^$', RedirectView.as_view(url=reverse_lazy('mailtoken_show_tokens'), permanent=True)),
url(r'^token/$', 'show_tokens', name='mailtoken_show_tokens' ),
url(r'^token/(?P<mailtoken_slug>[-\w]+)/$', 'show_tokens' ),
url(r'^recipient/$', 'show_recipients' ),
url(r'^recipient/(?P<recipient_slug>[-\w]+)/$', 'show_recipients' ),
)

View file

@ -1,6 +1,6 @@
from django.contrib import admin
from ietf.mailtoken.models import MailToken, Recipient
from ietf.mailtrigger.models import MailTrigger, Recipient
class RecipientAdmin(admin.ModelAdmin):
list_display = [ 'slug', 'desc', 'template', 'has_code', ]
@ -10,8 +10,8 @@ class RecipientAdmin(admin.ModelAdmin):
admin.site.register(Recipient, RecipientAdmin)
class MailTokenAdmin(admin.ModelAdmin):
class MailTriggerAdmin(admin.ModelAdmin):
list_display = [ 'slug', 'desc', ]
filter_horizontal = [ 'to', 'cc', ]
admin.site.register(MailToken, MailTokenAdmin)
admin.site.register(MailTrigger, MailTriggerAdmin)

View file

@ -1,30 +1,30 @@
from django import forms
from ietf.mailtoken.models import MailToken
from ietf.mailtrigger.models import MailTrigger
class CcSelectForm(forms.Form):
expansions = dict()
cc_tokens = forms.MultipleChoiceField(
cc_choices = forms.MultipleChoiceField(
label='Cc',
choices=[],
widget=forms.CheckboxSelectMultiple(attrs={'frob':'knob'}),
)
def __init__(self, mailtoken_slug, mailtoken_context, *args, **kwargs):
def __init__(self, mailtrigger_slug, mailtrigger_context, *args, **kwargs):
super(CcSelectForm,self).__init__(*args,**kwargs)
mailtoken = MailToken.objects.get(slug=mailtoken_slug)
mailtrigger = MailTrigger.objects.get(slug=mailtrigger_slug)
for r in mailtoken.cc.all():
self.expansions[r.slug] = r.gather(**mailtoken_context)
for r in mailtrigger.cc.all():
self.expansions[r.slug] = r.gather(**mailtrigger_context)
non_empty_expansions = [x for x in self.expansions if self.expansions[x]]
self.fields['cc_tokens'].initial = non_empty_expansions
self.fields['cc_tokens'].choices = [(t,'%s: %s'%(t,", ".join(self.expansions[t]))) for t in non_empty_expansions]
self.fields['cc_choices'].initial = non_empty_expansions
self.fields['cc_choices'].choices = [(t,'%s: %s'%(t,", ".join(self.expansions[t]))) for t in non_empty_expansions]
def get_selected_addresses(self):
if self.is_valid():
addrs = []
for t in self.cleaned_data['cc_tokens']:
for t in self.cleaned_data['cc_choices']:
addrs.extend(self.expansions[t])
return addrs
else:

View file

@ -11,7 +11,7 @@ class Migration(migrations.Migration):
operations = [
migrations.CreateModel(
name='MailToken',
name='MailTrigger',
fields=[
('slug', models.CharField(max_length=32, serialize=False, primary_key=True)),
('desc', models.TextField(blank=True)),
@ -34,15 +34,15 @@ class Migration(migrations.Migration):
bases=(models.Model,),
),
migrations.AddField(
model_name='mailtoken',
model_name='mailtrigger',
name='cc',
field=models.ManyToManyField(related_name='used_in_cc', null=True, to='mailtoken.Recipient', blank=True),
field=models.ManyToManyField(related_name='used_in_cc', null=True, to='mailtrigger.Recipient', blank=True),
preserve_default=True,
),
migrations.AddField(
model_name='mailtoken',
model_name='mailtrigger',
name='to',
field=models.ManyToManyField(related_name='used_in_to', null=True, to='mailtoken.Recipient', blank=True),
field=models.ManyToManyField(related_name='used_in_to', null=True, to='mailtrigger.Recipient', blank=True),
preserve_default=True,
),
]

View file

@ -5,7 +5,7 @@ from django.db import migrations
def make_recipients(apps):
Recipient=apps.get_model('mailtoken','Recipient')
Recipient=apps.get_model('mailtrigger','Recipient')
rc = Recipient.objects.create
@ -247,10 +247,10 @@ def make_recipients(apps):
desc="The IETF New Work list",
template='<new-work@ietf.org>')
def make_mailtokens(apps):
def make_mailtriggers(apps):
Recipient=apps.get_model('mailtoken','Recipient')
MailToken=apps.get_model('mailtoken','MailToken')
Recipient=apps.get_model('mailtrigger','Recipient')
MailTrigger=apps.get_model('mailtrigger','MailTrigger')
def mt_factory(slug,desc,to_slugs,cc_slugs=[]):
@ -264,7 +264,7 @@ def make_mailtokens(apps):
print "****Some rule tried to use",recipient_slug
raise
m = MailToken.objects.create(slug=slug, desc=desc)
m = MailTrigger.objects.create(slug=slug, desc=desc)
m.to = Recipient.objects.filter(slug__in=to_slugs)
m.cc = Recipient.objects.filter(slug__in=cc_slugs)
@ -841,21 +841,21 @@ def make_mailtokens(apps):
def forward(apps, schema_editor):
make_recipients(apps)
make_mailtokens(apps)
make_mailtriggers(apps)
def reverse(apps, schema_editor):
Recipient=apps.get_model('mailtoken','Recipient')
MailToken=apps.get_model('mailtoken','MailToken')
Recipient=apps.get_model('mailtrigger','Recipient')
MailTrigger=apps.get_model('mailtrigger','MailTrigger')
Recipient.objects.all().delete()
MailToken.objects.all().delete()
MailTrigger.objects.all().delete()
class Migration(migrations.Migration):
dependencies = [
('mailtoken', '0001_initial'),
('mailtrigger', '0001_initial'),
]
operations = [

View file

@ -5,7 +5,7 @@ from django.template import Template, Context
from ietf.group.models import Role
class MailToken(models.Model):
class MailTrigger(models.Model):
slug = models.CharField(max_length=32, primary_key=True)
desc = models.TextField(blank=True)
to = models.ManyToManyField('Recipient', null=True, blank=True, related_name='used_in_to')

View file

@ -5,7 +5,7 @@ from tastypie.constants import ALL, ALL_WITH_RELATIONS # pyflakes:ignore
from ietf import api
from ietf.mailtoken.models import * # pyflakes:ignore
from ietf.mailtrigger.models import * # pyflakes:ignore
class RecipientResource(ModelResource):
@ -17,19 +17,19 @@ class RecipientResource(ModelResource):
"desc": ALL,
"template": ALL,
}
api.mailtoken.register(RecipientResource())
api.mailtrigger.register(RecipientResource())
class MailTokenResource(ModelResource):
class MailTriggerResource(ModelResource):
to = ToManyField(RecipientResource, 'to', null=True)
cc = ToManyField(RecipientResource, 'cc', null=True)
class Meta:
queryset = MailToken.objects.all()
#resource_name = 'mailtoken'
queryset = MailTrigger.objects.all()
#resource_name = 'mailtrigger'
filtering = {
"slug": ALL,
"desc": ALL,
"to": ALL_WITH_RELATIONS,
"cc": ALL_WITH_RELATIONS,
}
api.mailtoken.register(MailTokenResource())
api.mailtrigger.register(MailTriggerResource())

View file

@ -8,26 +8,26 @@ class EventMailTests(TestCase):
def setUp(self):
make_test_data()
def test_show_tokens(self):
def test_show_triggers(self):
url = urlreverse('ietf.mailtoken.views.show_tokens')
url = urlreverse('ietf.mailtrigger.views.show_triggers')
r = self.client.get(url)
self.assertEqual(r.status_code, 200)
self.assertTrue('ballot_saved' in r.content)
url = urlreverse('ietf.mailtoken.views.show_tokens',kwargs=dict(mailtoken_slug='ballot_saved'))
url = urlreverse('ietf.mailtrigger.views.show_triggers',kwargs=dict(mailtrigger_slug='ballot_saved'))
r = self.client.get(url)
self.assertEqual(r.status_code, 200)
self.assertTrue('ballot_saved' in r.content)
def test_show_recipients(self):
url = urlreverse('ietf.mailtoken.views.show_recipients')
url = urlreverse('ietf.mailtrigger.views.show_recipients')
r = self.client.get(url)
self.assertEqual(r.status_code, 200)
self.assertTrue('doc_group_mail_list' in r.content)
url = urlreverse('ietf.mailtoken.views.show_recipients',kwargs=dict(recipient_slug='doc_group_mail_list'))
url = urlreverse('ietf.mailtrigger.views.show_recipients',kwargs=dict(recipient_slug='doc_group_mail_list'))
r = self.client.get(url)
self.assertEqual(r.status_code, 200)
self.assertTrue('doc_group_mail_list' in r.content)

11
ietf/mailtrigger/urls.py Normal file
View file

@ -0,0 +1,11 @@
from django.conf.urls import patterns, url
from django.views.generic import RedirectView
from django.core.urlresolvers import reverse_lazy
urlpatterns = patterns('ietf.mailtrigger.views',
url(r'^$', RedirectView.as_view(url=reverse_lazy('mailtrigger_show_triggers'), permanent=True)),
url(r'^name/$', 'show_triggers', name='mailtrigger_show_triggers' ),
url(r'^name/(?P<mailtrigger_slug>[-\w]+)/$', 'show_triggers' ),
url(r'^recipient/$', 'show_recipients' ),
url(r'^recipient/(?P<recipient_slug>[-\w]+)/$', 'show_recipients' ),
)

View file

@ -1,5 +1,5 @@
from collections import namedtuple
from ietf.mailtoken.models import MailToken, Recipient
from ietf.mailtrigger.models import MailTrigger, Recipient
from ietf.submit.models import Submission
class AddrLists(namedtuple('AddrLists',['to','cc'])):
@ -15,15 +15,15 @@ class AddrLists(namedtuple('AddrLists',['to','cc'])):
return namedtuple('AddrListsAsStrings',['to','cc'])(to=to_string,cc=cc_string)
def gather_address_lists(slug, **kwargs):
mailtoken = MailToken.objects.get(slug=slug)
mailtrigger = MailTrigger.objects.get(slug=slug)
to = set()
for recipient in mailtoken.to.all():
for recipient in mailtrigger.to.all():
to.update(recipient.gather(**kwargs))
to.discard('')
cc = set()
for recipient in mailtoken.cc.all():
for recipient in mailtrigger.cc.all():
cc.update(recipient.gather(**kwargs))
cc.discard('')
@ -32,7 +32,7 @@ def gather_address_lists(slug, **kwargs):
def gather_relevant_expansions(**kwargs):
def starts_with(prefix):
return MailToken.objects.filter(slug__startswith=prefix).values_list('slug',flat=True)
return MailTrigger.objects.filter(slug__startswith=prefix).values_list('slug',flat=True)
relevant = set()
@ -74,10 +74,10 @@ def gather_relevant_expansions(**kwargs):
relevant.update(starts_with('sub_'))
rule_list = []
for mailtoken in MailToken.objects.filter(slug__in=relevant):
addrs = gather_address_lists(mailtoken.slug,**kwargs)
for mailtrigger in MailTrigger.objects.filter(slug__in=relevant):
addrs = gather_address_lists(mailtrigger.slug,**kwargs)
if addrs.to or addrs.cc:
rule_list.append((mailtoken.slug,mailtoken.desc,addrs.to,addrs.cc))
rule_list.append((mailtrigger.slug,mailtrigger.desc,addrs.to,addrs.cc))
return sorted(rule_list)
def get_base_ipr_request_address():

View file

@ -4,15 +4,15 @@ from inspect import getsourcelines
from django.shortcuts import render, get_object_or_404
from ietf.mailtoken.models import MailToken, Recipient
from ietf.mailtrigger.models import MailTrigger, Recipient
def show_tokens(request, mailtoken_slug=None):
mailtokens = MailToken.objects.all()
if mailtoken_slug:
get_object_or_404(MailToken,slug=mailtoken_slug)
mailtokens = mailtokens.filter(slug=mailtoken_slug)
return render(request,'mailtoken/token.html',{'mailtoken_slug':mailtoken_slug,
'mailtokens':mailtokens})
def show_triggers(request, mailtrigger_slug=None):
mailtriggers = MailTrigger.objects.all()
if mailtrigger_slug:
get_object_or_404(MailTrigger,slug=mailtrigger_slug)
mailtriggers = mailtriggers.filter(slug=mailtrigger_slug)
return render(request,'mailtrigger/trigger.html',{'mailtrigger_slug':mailtrigger_slug,
'mailtriggers':mailtriggers})
def show_recipients(request, recipient_slug=None):
recipients = Recipient.objects.all()
if recipient_slug:
@ -22,5 +22,5 @@ def show_recipients(request, recipient_slug=None):
fname = 'gather_%s'%recipient.slug
if hasattr(recipient,fname):
recipient.code = ''.join(getsourcelines(getattr(recipient,fname))[0])
return render(request,'mailtoken/recipient.html',{'recipient_slug':recipient_slug,
return render(request,'mailtrigger/recipient.html',{'recipient_slug':recipient_slug,
'recipients':recipients})

File diff suppressed because it is too large Load diff

View file

@ -41,9 +41,9 @@ objects += ietf.doc.models.StateType.objects.all()
objects += ietf.doc.models.State.objects.all()
objects += ietf.doc.models.BallotType.objects.all()
import ietf.mailtoken.models
objects += ietf.mailtoken.models.Recipient.objects.all()
objects += ietf.mailtoken.models.MailToken.objects.all()
import ietf.mailtrigger.models
objects += ietf.mailtrigger.models.Recipient.objects.all()
objects += ietf.mailtrigger.models.MailTrigger.objects.all()
output("names", objects)

View file

@ -20,7 +20,7 @@ from ietf.person.models import Email
from ietf.person.fields import SearchableEmailField
from ietf.utils.fields import MultiEmailField
from ietf.utils.mail import send_mail
from ietf.mailtoken.utils import gather_address_lists
from ietf.mailtrigger.utils import gather_address_lists
ROLODEX_URL = getattr(settings, 'ROLODEX_URL', None)

View file

@ -18,7 +18,7 @@ from django.utils.encoding import smart_str
from ietf.dbtemplate.models import DBTemplate
from ietf.person.models import Email, Person
from ietf.mailtoken.utils import gather_address_lists
from ietf.mailtrigger.utils import gather_address_lists
from ietf.utils.pipe import pipe
from ietf.utils import unaccent
from ietf.utils.mail import send_mail_text, send_mail

View file

@ -26,7 +26,7 @@ from ietf.secr.proceedings.views import build_choices, handle_upload_file, make_
from ietf.secr.sreq.forms import GroupSelectForm
from ietf.secr.sreq.views import get_initial_session
from ietf.secr.utils.meeting import get_session, get_timeslot
from ietf.mailtoken.utils import gather_address_lists
from ietf.mailtrigger.utils import gather_address_lists
# prep for agenda changes

View file

@ -16,7 +16,7 @@ from ietf.secr.utils.decorators import check_permissions
from ietf.secr.utils.group import groups_by_session
from ietf.utils.mail import send_mail
from ietf.person.models import Person
from ietf.mailtoken.utils import gather_address_lists
from ietf.mailtrigger.utils import gather_address_lists
# -------------------------------------------------
# Globals

View file

@ -219,7 +219,7 @@ INSTALLED_APPS = (
'ietf.ipr',
'ietf.liaisons',
'ietf.mailinglists',
'ietf.mailtoken',
'ietf.mailtrigger',
'ietf.meeting',
'ietf.message',
'ietf.name',

View file

@ -8,7 +8,7 @@ from ietf.doc.models import Document
from ietf.person.models import Person
from ietf.message.models import Message
from ietf.utils.accesstoken import generate_access_token
from ietf.mailtoken.utils import gather_address_lists
from ietf.mailtrigger.utils import gather_address_lists
def send_submission_confirmation(request, submission):
subject = 'Confirm submission of I-D %s' % submission.name

View file

@ -23,7 +23,7 @@ from ietf.submit.utils import check_idnits, found_idnits, validate_submission, c
from ietf.submit.utils import post_submission, cancel_submission, rename_submission_files
from ietf.utils.accesstoken import generate_random_key, generate_access_token
from ietf.utils.draft import Draft
from ietf.mailtoken.utils import gather_address_lists
from ietf.mailtrigger.utils import gather_address_lists
def upload_submission(request):

View file

@ -30,16 +30,16 @@
<table class="table table-condensed table-striped ietf">
<thead>
<tr>
<th>MailToken</th>
<th>Mail Trigger</th>
<th>To</th>
<th>Cc</th>
</tr>
</thead>
<tbody>
{% for token,desc,to,cc in expansions %}
{% for trigger,desc,to,cc in expansions %}
<tr>
<td><a href="{% url 'ietf.mailtoken.views.show_tokens' token %}"
title="{{desc}}">{{token}}</a></td>
<td><a href="{% url 'ietf.mailtrigger.views.show_triggers' trigger %}"
title="{{desc}}">{{trigger}}</a></td>
<td> {{to|join:', '}}</td>
<td> {{cc|join:', '}}</td>
</tr>

View file

@ -27,16 +27,16 @@
<table class="table table-condensed table-striped ietf">
<thead>
<tr>
<th>MailToken</th>
<th>Mail Trigger</th>
<th>To</th>
<th>Cc</th>
</tr>
</thead>
<tbody>
{% for token,desc,to,cc in expansions %}
{% for trigger,desc,to,cc in expansions %}
<tr>
<td><a href="{% url 'ietf.mailtoken.views.show_tokens' token %}"
title="{{desc}}">{{token}}</a></td>
<td><a href="{% url 'ietf.mailtrigger.views.show_triggers' trigger %}"
title="{{desc}}">{{trigger}}</a></td>
<td> {{to|join:', '}}</td>
<td> {{cc|join:', '}}</td>
</tr>

View file

@ -13,7 +13,7 @@
<thead>
<tr>
<th>Recipient</th>
<th>Tokens</th>
<th>Triggers</th>
<th>Template</th>
<th>Code</th>
</tr>
@ -23,11 +23,11 @@
<tr>
<td><span title="{{recipient.desc}}">{{recipient.slug}}</span></td>
<td>
{% for mailtoken in recipient.used_in_to.all %}
<a href="{% url 'ietf.mailtoken.views.show_tokens' mailtoken.slug %}" title="{{mailtoken.desc}}">{{mailtoken.slug}}</a>{% if not forloop.last %}, {%endif%}
{% for mailtrigger in recipient.used_in_to.all %}
<a href="{% url 'ietf.mailtrigger.views.show_triggers' mailtrigger.slug %}" title="{{mailtrigger.desc}}">{{mailtrigger.slug}}</a>{% if not forloop.last %}, {%endif%}
{% endfor %}{% if recipient.used_in_to.exists and recipient.used_in_cc.exists %},{% endif %}
{% for mailtoken in recipient.used_in_cc.all %}
<a href="{% url 'ietf.mailtoken.views.show_tokens' mailtoken.slug %}" title="{{mailtoken.desc}}">{{mailtoken.slug}}</a>{% if not forloop.last %}, {%endif%}
{% for mailtrigger in recipient.used_in_cc.all %}
<a href="{% url 'ietf.mailtrigger.views.show_triggers' mailtrigger.slug %}" title="{{mailtrigger.desc}}">{{mailtrigger.slug}}</a>{% if not forloop.last %}, {%endif%}
{% endfor %}
</td>
<td>{{recipient.template}}</td>

View file

@ -2,34 +2,34 @@
{# Copyright The IETF Trust 2015, All Rights Reserved #}
{% load origin %}
{% block title %}Mail Tokens{% endblock %}
{% block title %}Mail Triggers{% endblock %}
{% block content %}
{% origin %}
<h1>Mail Tokens</h1>
<h1>Mail Triggers</h1>
<table class="table table-condensed table-striped">
<thead>
<tr>
<th>Token</th>
<th>Trigger</th>
<th>Recipients</th>
</tr>
</thead>
<tbody>
{% for mailtoken in mailtokens %}
{% for mailtrigger in mailtriggers %}
<tr>
<td><span title="{{mailtoken.desc}}">{{mailtoken.slug}}</span></td>
<td><span title="{{mailtrigger.desc}}">{{mailtrigger.slug}}</span></td>
<td>To:
{% for recipient in mailtoken.to.all %}
{% for recipient in mailtrigger.to.all %}
{% comment %}<span title="{{recipient.desc}}">{{recipient.slug}}</span>{% endcomment %}
<a href="{% url 'ietf.mailtoken.views.show_recipients' recipient.slug %}" title="{{recipient.desc}}">{{recipient.slug}}</a>{% if not forloop.last %}, {% endif %}
<a href="{% url 'ietf.mailtrigger.views.show_recipients' recipient.slug %}" title="{{recipient.desc}}">{{recipient.slug}}</a>{% if not forloop.last %}, {% endif %}
{% endfor %}
{% if mailtoken.cc.exists %}
{% if mailtrigger.cc.exists %}
<br/>Cc:
{% for recipient in mailtoken.cc.all %}
{% for recipient in mailtrigger.cc.all %}
{% comment %}<span title="{{recipient.desc}}">{{recipient.slug}}</span>{% endcomment %}
<a href="{% url 'ietf.mailtoken.views.show_recipients' recipient.slug %}" title="{{recipient.desc}}">{{recipient.slug}}</a>{% if not forloop.last %}, {% endif %}
<a href="{% url 'ietf.mailtrigger.views.show_recipients' recipient.slug %}" title="{{recipient.desc}}">{{recipient.slug}}</a>{% if not forloop.last %}, {% endif %}
{% endfor %}
{% endif %}
</td>

View file

@ -35,7 +35,7 @@ urlpatterns = patterns('',
(r'^accounts/settings/', include('ietf.cookies.urls')),
(r'^doc/', include('ietf.doc.urls')),
(r'^drafts/', include('ietf.doc.redirect_drafts_urls')),
(r'^mailtoken/',include('ietf.mailtoken.urls')),
(r'^mailtrigger/',include('ietf.mailtrigger.urls')),
(r'^feed/', include('ietf.feed_urls')),
(r'^group/', include('ietf.group.urls')),
(r'^help/', include('ietf.help.urls')),