Skip to content

Commit 79dda88

Browse files
committed
Adds pages to view the draft and group email aliases, either as a whole, or per document or group. Commit ready for merge.
- Legacy-Id: 9070
1 parent 2783138 commit 79dda88

File tree

6 files changed

+85
-2
lines changed

6 files changed

+85
-2
lines changed

ietf/doc/urls.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@
4646
url(r'^rfc-status-changes/$', views_status_change.rfc_status_changes, name='rfc_status_changes'),
4747
url(r'^start-rfc-status-change/(?P<name>[A-Za-z0-9._+-]*)$', views_status_change.start_rfc_status_change, name='start_rfc_status_change'),
4848
url(r'^iesg/(?P<last_call_only>[A-Za-z0-9.-]+/)?$', views_search.drafts_in_iesg_process, name="drafts_in_iesg_process"),
49+
url(r'^email-aliases/$', views_doc.email_aliases),
4950

5051
url(r'^all/$', views_search.index_all_drafts, name="index_all_drafts"),
5152
url(r'^active/$', views_search.index_active_drafts, name="index_active_drafts"),
@@ -63,6 +64,8 @@
6364
(r'^(?P<name>[A-Za-z0-9._+-]+)/doc.json$', views_doc.document_json),
6465
(r'^(?P<name>[A-Za-z0-9._+-]+)/ballotpopup/(?P<ballot_id>[0-9]+)/$', views_doc.ballot_popup),
6566

67+
url(r'^(?P<name>[A-Za-z0-9._+-]+)/email-aliases/$', views_doc.email_aliases),
68+
6669
url(r'^(?P<name>[A-Za-z0-9._+-]+)/edit/state/$', views_draft.change_state, name='doc_change_state'), # IESG state
6770
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'),
6871
url(r'^(?P<name>[A-Za-z0-9._+-]+)/edit/info/$', views_draft.edit_info, name='doc_edit_info'),

ietf/doc/views_doc.py

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,10 +30,12 @@
3030
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
3131
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
3232

33-
import os, datetime, urllib, json, glob
33+
import os, datetime, urllib, json, glob, re
34+
35+
from contextlib import closing
3436

3537
from django.http import HttpResponse, Http404 , HttpResponseForbidden
36-
from django.shortcuts import render_to_response, get_object_or_404, redirect
38+
from django.shortcuts import render, render_to_response, get_object_or_404, redirect
3739
from django.template import RequestContext
3840
from django.template.loader import render_to_string
3941
from django.core.exceptions import ObjectDoesNotExist
@@ -957,3 +959,19 @@ def edit_notify(request, name):
957959
'titletext': titletext,
958960
},
959961
context_instance = RequestContext(request))
962+
963+
def email_aliases(request,name=''):
964+
doc = get_object_or_404(Document, name=name) if name else None
965+
if name:
966+
pattern = re.compile('^expand-(%s)(\..*?)?@.*? +(.*)$'%name)
967+
else:
968+
pattern = re.compile('^expand-(.*?)(\..*?)?@.*? +(.*)$')
969+
aliases = []
970+
with closing(open(settings.DRAFT_VIRTUAL_PATH,"r")) as virtual_file:
971+
for line in virtual_file.readlines():
972+
m = pattern.match(line)
973+
if m:
974+
aliases.append({'doc_name':m.group(1),'alias_type':m.group(2),'expansion':m.group(3)})
975+
976+
return render(request,'doc/email_aliases.html',{'aliases':aliases,'ietf_domain':settings.IETF_DOMAIN,'doc':doc})
977+

ietf/group/info.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,10 @@
3434

3535
import os
3636
import itertools
37+
import re
3738
from tempfile import mkstemp
3839
from collections import OrderedDict
40+
from contextlib import closing
3941

4042
from django.shortcuts import render
4143
from django.template.loader import render_to_string
@@ -621,3 +623,21 @@ def dependencies_pdf(request, acronym, group_type=None):
621623
os.unlink(dotname)
622624

623625
return HttpResponse(pdf, content_type='application/pdf')
626+
627+
def email_aliases(request, acronym=None):
628+
group = get_group_or_404(acronym,None) if acronym else None
629+
630+
if acronym:
631+
pattern = re.compile('expand-(%s)(-\w+)@.*? +(.*)$'%acronym)
632+
else:
633+
pattern = re.compile('expand-(.*?)(-\w+)@.*? +(.*)$')
634+
635+
aliases = []
636+
with closing(open(settings.GROUP_VIRTUAL_PATH,"r")) as virtual_file:
637+
for line in virtual_file.readlines():
638+
m = pattern.match(line)
639+
if m:
640+
aliases.append({'acronym':m.group(1),'alias_type':m.group(2),'expansion':m.group(3)})
641+
642+
return render(request,'group/email_aliases.html',{'aliases':aliases,'ietf_domain':settings.IETF_DOMAIN,'group':group})
643+

ietf/group/urls.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
(r'^chartering/$', 'ietf.group.info.chartering_groups'),
88
(r'^chartering/create/(?P<group_type>(wg|rg))/$', 'ietf.group.edit.edit', {'action': "charter"}, "group_create"),
99
(r'^concluded/$', 'ietf.group.info.concluded_groups'),
10+
(r'^email-aliases/$', 'ietf.group.info.email_aliases'),
1011
# FIXME: the things below are duplicated in urls_info.py while we
1112
# figure out whether to serve everything from /group/<acronym>,
1213
# need to unify these at some point
@@ -29,6 +30,7 @@
2930
(r'^(?P<acronym>[a-zA-Z0-9-._]+)/materials/$', 'ietf.group.info.materials', None, "group_materials"),
3031
(r'^(?P<acronym>[a-zA-Z0-9-._]+)/materials/new/$', 'ietf.doc.views_material.choose_material_type'),
3132
(r'^(?P<acronym>[a-zA-Z0-9-._]+)/materials/new/(?P<doc_type>[\w-]+)/$', 'ietf.doc.views_material.edit_material', { 'action': "new" }, "group_new_material"),
33+
(r'^(?P<acronym>[A-Za-z0-9._+-]+)/email-aliases/$', 'ietf.group.info.email_aliases'),
3234
)
3335

3436

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
{% extends "base.html" %}
2+
3+
{% block morecss %}
4+
td.aliasname { white-space:nowrap;}
5+
{% endblock %}
6+
7+
{% block title %}Document email aliases{% if doc %} for {{doc.name}}{% endif %}{% endblock %}
8+
9+
{% block content %}
10+
<h1>Document email aliases{% if doc %} for {{doc.name}}{% endif %}</h1>
11+
{% regroup aliases|dictsort:"doc_name" by doc_name as alias_list %}
12+
<table class="ietf-table">
13+
{% for alias in alias_list %}
14+
{% cycle 'evenrow' 'oddrow' as alternator silent %}
15+
{% for item in alias.list %}
16+
<tr class={{alternator}}><td class="aliasname">{{alias.grouper}}{{item.alias_type|default:''}}@{{ietf_domain}}</td><td>{{item.expansion}}</td></tr>
17+
{% endfor %}
18+
{% endfor %}
19+
</table>
20+
{% endblock %}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
{% extends "base.html" %}
2+
3+
{% block morecss %}
4+
td.aliasname { white-space:nowrap;}
5+
{% endblock %}
6+
7+
{% block title %}Group email aliases{% if group %} for {{group.acronym}}{% endif %}{% endblock %}
8+
9+
{% block content %}
10+
<h1>Group email aliases{% if group %} for {{group.acronym}}{% endif %}</h1>
11+
{% regroup aliases|dictsort:"acronym" by acronym as alias_list %}
12+
<table class="ietf-table">
13+
{% for alias in alias_list %}
14+
{% cycle 'evenrow' 'oddrow' as alternator silent %}
15+
{% for item in alias.list %}
16+
<tr class={{alternator}}><td class="aliasname">{{alias.grouper}}{{item.alias_type|default:''}}@{{ietf_domain}}</td><td>{{item.expansion}}</td></tr>
17+
{% endfor %}
18+
{% endfor %}
19+
</table>
20+
{% endblock %}

0 commit comments

Comments
 (0)