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:
parent
278313829c
commit
79dda88337
ietf
|
@ -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'),
|
||||
|
|
|
@ -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})
|
||||
|
||||
|
|
|
@ -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})
|
||||
|
||||
|
|
|
@ -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'),
|
||||
)
|
||||
|
||||
|
||||
|
|
20
ietf/templates/doc/email_aliases.html
Normal file
20
ietf/templates/doc/email_aliases.html
Normal 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 %}
|
20
ietf/templates/group/email_aliases.html
Normal file
20
ietf/templates/group/email_aliases.html
Normal 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 %}
|
Loading…
Reference in a new issue