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
This commit is contained in:
Robert Sparks 2015-02-11 21:50:34 +00:00
parent 278313829c
commit 79dda88337
6 changed files with 85 additions and 2 deletions

View file

@ -46,6 +46,7 @@ urlpatterns = patterns('',
url(r'^rfc-status-changes/$', views_status_change.rfc_status_changes, name='rfc_status_changes'),
url(r'^start-rfc-status-change/(?P<name>[A-Za-z0-9._+-]*)$', views_status_change.start_rfc_status_change, name='start_rfc_status_change'),
url(r'^iesg/(?P<last_call_only>[A-Za-z0-9.-]+/)?$', views_search.drafts_in_iesg_process, name="drafts_in_iesg_process"),
url(r'^email-aliases/$', views_doc.email_aliases),
url(r'^all/$', views_search.index_all_drafts, name="index_all_drafts"),
url(r'^active/$', views_search.index_active_drafts, name="index_active_drafts"),
@ -63,6 +64,8 @@ urlpatterns = patterns('',
(r'^(?P<name>[A-Za-z0-9._+-]+)/doc.json$', views_doc.document_json),
(r'^(?P<name>[A-Za-z0-9._+-]+)/ballotpopup/(?P<ballot_id>[0-9]+)/$', views_doc.ballot_popup),
url(r'^(?P<name>[A-Za-z0-9._+-]+)/email-aliases/$', views_doc.email_aliases),
url(r'^(?P<name>[A-Za-z0-9._+-]+)/edit/state/$', views_draft.change_state, name='doc_change_state'), # IESG state
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'),
url(r'^(?P<name>[A-Za-z0-9._+-]+)/edit/info/$', views_draft.edit_info, name='doc_edit_info'),

View file

@ -30,10 +30,12 @@
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
import os, datetime, urllib, json, glob
import os, datetime, urllib, json, glob, re
from contextlib import closing
from django.http import HttpResponse, Http404 , HttpResponseForbidden
from django.shortcuts import render_to_response, get_object_or_404, redirect
from django.shortcuts import render, render_to_response, get_object_or_404, redirect
from django.template import RequestContext
from django.template.loader import render_to_string
from django.core.exceptions import ObjectDoesNotExist
@ -957,3 +959,19 @@ def edit_notify(request, name):
'titletext': titletext,
},
context_instance = RequestContext(request))
def email_aliases(request,name=''):
doc = get_object_or_404(Document, name=name) if name else None
if name:
pattern = re.compile('^expand-(%s)(\..*?)?@.*? +(.*)$'%name)
else:
pattern = re.compile('^expand-(.*?)(\..*?)?@.*? +(.*)$')
aliases = []
with closing(open(settings.DRAFT_VIRTUAL_PATH,"r")) as virtual_file:
for line in virtual_file.readlines():
m = pattern.match(line)
if m:
aliases.append({'doc_name':m.group(1),'alias_type':m.group(2),'expansion':m.group(3)})
return render(request,'doc/email_aliases.html',{'aliases':aliases,'ietf_domain':settings.IETF_DOMAIN,'doc':doc})

View file

@ -34,8 +34,10 @@
import os
import itertools
import re
from tempfile import mkstemp
from collections import OrderedDict
from contextlib import closing
from django.shortcuts import render
from django.template.loader import render_to_string
@ -621,3 +623,21 @@ def dependencies_pdf(request, acronym, group_type=None):
os.unlink(dotname)
return HttpResponse(pdf, content_type='application/pdf')
def email_aliases(request, acronym=None):
group = get_group_or_404(acronym,None) if acronym else None
if acronym:
pattern = re.compile('expand-(%s)(-\w+)@.*? +(.*)$'%acronym)
else:
pattern = re.compile('expand-(.*?)(-\w+)@.*? +(.*)$')
aliases = []
with closing(open(settings.GROUP_VIRTUAL_PATH,"r")) as virtual_file:
for line in virtual_file.readlines():
m = pattern.match(line)
if m:
aliases.append({'acronym':m.group(1),'alias_type':m.group(2),'expansion':m.group(3)})
return render(request,'group/email_aliases.html',{'aliases':aliases,'ietf_domain':settings.IETF_DOMAIN,'group':group})

View file

@ -7,6 +7,7 @@ urlpatterns = patterns('',
(r'^chartering/$', 'ietf.group.info.chartering_groups'),
(r'^chartering/create/(?P<group_type>(wg|rg))/$', 'ietf.group.edit.edit', {'action': "charter"}, "group_create"),
(r'^concluded/$', 'ietf.group.info.concluded_groups'),
(r'^email-aliases/$', 'ietf.group.info.email_aliases'),
# FIXME: the things below are duplicated in urls_info.py while we
# figure out whether to serve everything from /group/<acronym>,
# need to unify these at some point
@ -29,6 +30,7 @@ urlpatterns = patterns('',
(r'^(?P<acronym>[a-zA-Z0-9-._]+)/materials/$', 'ietf.group.info.materials', None, "group_materials"),
(r'^(?P<acronym>[a-zA-Z0-9-._]+)/materials/new/$', 'ietf.doc.views_material.choose_material_type'),
(r'^(?P<acronym>[a-zA-Z0-9-._]+)/materials/new/(?P<doc_type>[\w-]+)/$', 'ietf.doc.views_material.edit_material', { 'action': "new" }, "group_new_material"),
(r'^(?P<acronym>[A-Za-z0-9._+-]+)/email-aliases/$', 'ietf.group.info.email_aliases'),
)

View file

@ -0,0 +1,20 @@
{% extends "base.html" %}
{% block morecss %}
td.aliasname { white-space:nowrap;}
{% endblock %}
{% block title %}Document email aliases{% if doc %} for {{doc.name}}{% endif %}{% endblock %}
{% block content %}
<h1>Document email aliases{% if doc %} for {{doc.name}}{% endif %}</h1>
{% regroup aliases|dictsort:"doc_name" by doc_name as alias_list %}
<table class="ietf-table">
{% for alias in alias_list %}
{% cycle 'evenrow' 'oddrow' as alternator silent %}
{% for item in alias.list %}
<tr class={{alternator}}><td class="aliasname">{{alias.grouper}}{{item.alias_type|default:''}}@{{ietf_domain}}</td><td>{{item.expansion}}</td></tr>
{% endfor %}
{% endfor %}
</table>
{% endblock %}

View file

@ -0,0 +1,20 @@
{% extends "base.html" %}
{% block morecss %}
td.aliasname { white-space:nowrap;}
{% endblock %}
{% block title %}Group email aliases{% if group %} for {{group.acronym}}{% endif %}{% endblock %}
{% block content %}
<h1>Group email aliases{% if group %} for {{group.acronym}}{% endif %}</h1>
{% regroup aliases|dictsort:"acronym" by acronym as alias_list %}
<table class="ietf-table">
{% for alias in alias_list %}
{% cycle 'evenrow' 'oddrow' as alternator silent %}
{% for item in alias.list %}
<tr class={{alternator}}><td class="aliasname">{{alias.grouper}}{{item.alias_type|default:''}}@{{ietf_domain}}</td><td>{{item.expansion}}</td></tr>
{% endfor %}
{% endfor %}
</table>
{% endblock %}