Skip to content

Commit e7007a6

Browse files
committed
Merged in [9070] from rjsparks@nostrum.com:
Adds pages to view the draft and group email aliases, either as a whole, or per document or group. - Legacy-Id: 9105 Note: SVN reference [9070] has been migrated to Git commit 79dda88
2 parents b880779 + 79dda88 commit e7007a6

6 files changed

Lines changed: 82 additions & 2 deletions

File tree

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: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,10 +30,10 @@
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
3434

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

ietf/group/info.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434

3535
import os
3636
import itertools
37+
import re
3738
from tempfile import mkstemp
3839
from collections import OrderedDict
3940

@@ -621,3 +622,21 @@ def dependencies_pdf(request, acronym, group_type=None):
621622
os.unlink(dotname)
622623

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

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)