Skip to content

Commit 46c5b3f

Browse files
committed
Moved doc-specific email aliases onto the email tab for the document
- Legacy-Id: 10057
1 parent 9abd670 commit 46c5b3f

5 files changed

Lines changed: 52 additions & 37 deletions

File tree

ietf/doc/tests.py

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -788,14 +788,20 @@ def tearDown(self):
788788
os.unlink(self.doc_alias_file.name)
789789

790790
def testAliases(self):
791-
url = urlreverse('ietf.doc.views_doc.email_aliases', kwargs=dict(name="draft-ietf-mars-test"))
791+
url = urlreverse('doc_specific_email_aliases', kwargs=dict(name="draft-ietf-mars-test"))
792792
r = self.client.get(url)
793-
self.assertTrue(all([x in r.content for x in ['mars-test@','mars-test.authors@','mars-test.chairs@']]))
794-
self.assertFalse(any([x in r.content for x in ['ames-test@','ames-test.authors@','ames-test.chairs@']]))
793+
self.assertEqual(r.status_code, 302)
795794

796795
url = urlreverse('ietf.doc.views_doc.email_aliases', kwargs=dict())
797796
login_testing_unauthorized(self, "plain", url)
798797
r = self.client.get(url)
798+
self.assertEqual(r.status_code, 200)
799799
self.assertTrue(all([x in r.content for x in ['mars-test@','mars-test.authors@','mars-test.chairs@']]))
800800
self.assertTrue(all([x in r.content for x in ['ames-test@','ames-test.authors@','ames-test.chairs@']]))
801801

802+
def testExpansions(self):
803+
url = urlreverse('ietf.doc.views_doc.document_email', kwargs=dict(name="draft-ietf-mars-test"))
804+
r = self.client.get(url)
805+
self.assertEqual(r.status_code, 200)
806+
self.assertTrue('draft-ietf-mars-test.all@ietf.org' in r.content)
807+
self.assertTrue('ballot_saved' in r.content)

ietf/doc/urls.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@
6666
(r'^(?P<name>[A-Za-z0-9._+-]+)/doc.json$', views_doc.document_json),
6767
(r'^(?P<name>[A-Za-z0-9._+-]+)/ballotpopup/(?P<ballot_id>[0-9]+)/$', views_doc.ballot_popup),
6868

69-
url(r'^(?P<name>[A-Za-z0-9._+-]+)/email-aliases/$', views_doc.email_aliases),
69+
url(r'^(?P<name>[A-Za-z0-9._+-]+)/email-aliases/$', RedirectView.as_view(pattern_name='doc_email', permanent=False),name='doc_specific_email_aliases'),
7070

7171
url(r'^(?P<name>[A-Za-z0-9._+-]+)/edit/state/$', views_draft.change_state, name='doc_change_state'), # IESG state
7272
url(r'^(?P<name>[A-Za-z0-9._+-]+)/edit/state/(?P<state_type>iana-action|iana-review)/$', views_draft.change_iana_state, name='doc_change_iana_state'),

ietf/doc/views_doc.py

Lines changed: 19 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -571,19 +571,34 @@ def document_main(request, name, rev=None):
571571
raise Http404
572572

573573

574-
574+
def get_email_aliases(name):
575+
if name:
576+
pattern = re.compile('^expand-(%s)(\..*?)?@.*? +(.*)$'%name)
577+
else:
578+
pattern = re.compile('^expand-(.*?)(\..*?)?@.*? +(.*)$')
579+
aliases = []
580+
with open(settings.DRAFT_VIRTUAL_PATH,"r") as virtual_file:
581+
for line in virtual_file.readlines():
582+
m = pattern.match(line)
583+
if m:
584+
aliases.append({'doc_name':m.group(1),'alias_type':m.group(2),'expansion':m.group(3)})
585+
return aliases
575586

576587

577588
def document_email(request,name):
578589
doc = get_object_or_404(Document, docalias__name=name)
579590
top = render_document_top(request, doc, "email", name)
580591

592+
aliases = get_email_aliases(name) if doc.type_id=='draft' else None
593+
581594
expansions = gather_relevant_expansions(doc=doc)
582595

583596
return render(request, "doc/document_email.html",
584597
dict(doc=doc,
585598
top=top,
599+
aliases=aliases,
586600
expansions=expansions,
601+
ietf_domain=settings.IETF_DOMAIN,
587602
)
588603
)
589604

@@ -999,20 +1014,12 @@ def edit_notify(request, name):
9991014

10001015
def email_aliases(request,name=''):
10011016
doc = get_object_or_404(Document, name=name) if name else None
1002-
if name:
1003-
pattern = re.compile('^expand-(%s)(\..*?)?@.*? +(.*)$'%name)
1004-
else:
1017+
if not name:
10051018
# require login for the overview page, but not for the
1006-
# document-specific pages handled above
1019+
# document-specific pages
10071020
if not request.user.is_authenticated():
10081021
return redirect('%s?next=%s' % (settings.LOGIN_URL, request.path))
1009-
pattern = re.compile('^expand-(.*?)(\..*?)?@.*? +(.*)$')
1010-
aliases = []
1011-
with open(settings.DRAFT_VIRTUAL_PATH,"r") as virtual_file:
1012-
for line in virtual_file.readlines():
1013-
m = pattern.match(line)
1014-
if m:
1015-
aliases.append({'doc_name':m.group(1),'alias_type':m.group(2),'expansion':m.group(3)})
1022+
aliases = get_email_aliases(name)
10161023

10171024
return render(request,'doc/email_aliases.html',{'aliases':aliases,'ietf_domain':settings.IETF_DOMAIN,'doc':doc})
10181025

ietf/mailtoken/utils.py

Lines changed: 8 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -35,17 +35,19 @@ def gather_relevant_expansions(**kwargs):
3535

3636
doc = kwargs['doc']
3737

38-
relevant.update(MailToken.objects.filter(slug__startswith='doc_').values_list('slug',flat=True))
39-
40-
if doc.stream_id == 'ietf':
41-
relevant.update(['ballot_approved_ietf_stream'])
42-
else:
43-
relevant.update(['pubreq_rfced'])
38+
relevant.update(['doc_state_edited','doc_telechat_details_changed','ballot_deferred','ballot_saved'])
4439

4540
if doc.type_id in ['draft','statchg']:
4641
relevant.update(MailToken.objects.filter(slug__startswith='last_call_').values_list('slug',flat=True))
42+
4743
if doc.type_id == 'draft':
44+
relevant.update(MailToken.objects.filter(slug__startswith='doc_').values_list('slug',flat=True))
4845
relevant.update(['ipr_posted_on_doc',])
46+
if doc.stream_id == 'ietf':
47+
relevant.update(['ballot_approved_ietf_stream'])
48+
else:
49+
relevant.update(['pubreq_rfced'])
50+
4951
if doc.type_id == 'conflrev':
5052
relevant.update(['conflrev_requested','ballot_approved_conflrev'])
5153
if doc.type_id == 'charter':
@@ -57,21 +59,6 @@ def gather_relevant_expansions(**kwargs):
5759
rule_list.append((mailtoken.slug,mailtoken.desc,addrs.to,addrs.cc))
5860
return sorted(rule_list)
5961

60-
#def gather_relevant_expansions_recipient(**kwargs):
61-
# relevant_tokens = []
62-
#
63-
# if 'doc' in kwargs:
64-
# relevant_tokens.extend(Recipient.objects.filter(slug__startswith='doc').values_list('slug',flat=True))
65-
#
66-
# rule_dict = {}
67-
#
68-
# for recipient in Recipient.objects.filter(slug__in=relevant_tokens):
69-
# #for recipient in Recipient.objects.all():
70-
# addrs = recipient.gather(**kwargs)
71-
# if addrs:
72-
# rule_dict[recipient.slug] = recipient.gather(**kwargs)
73-
# return sorted(rule_dict.iteritems())
74-
7562
def get_base_ipr_request_address():
7663
return Recipient.objects.get(slug='ipr_requests').gather()[0]
7764

ietf/templates/doc/document_email.html

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,21 @@
1010
{% origin %}
1111
{{ top|safe }}
1212

13+
{% if aliases %}
14+
<h2>Email Aliases</h2>
15+
16+
<table class="table table-condensed table-striped ietf">
17+
<tbody>
18+
{% for alias in aliases %}
19+
<tr>
20+
<td>{{ doc.name }}{{ alias.alias_type|default:''}}@{{ietf_domain}}</td>
21+
<td>{{ alias.expansion }}</td>
22+
</tr>
23+
{% endfor %}
24+
</tbody>
25+
</table>
26+
{% endif %}
27+
1328
<h2>Recipient Expansions</h2>
1429

1530
<table class="table table-condensed table-striped ietf">

0 commit comments

Comments
 (0)