Moved doc-specific email aliases onto the email tab for the document

- Legacy-Id: 10057
This commit is contained in:
Robert Sparks 2015-08-25 15:19:55 +00:00
parent 9abd670587
commit 46c5b3ff64
5 changed files with 52 additions and 37 deletions

View file

@ -788,14 +788,20 @@ expand-draft-ietf-ames-test.all@virtual.ietf.org ames-author@example.ames, ames
os.unlink(self.doc_alias_file.name)
def testAliases(self):
url = urlreverse('ietf.doc.views_doc.email_aliases', kwargs=dict(name="draft-ietf-mars-test"))
url = urlreverse('doc_specific_email_aliases', kwargs=dict(name="draft-ietf-mars-test"))
r = self.client.get(url)
self.assertTrue(all([x in r.content for x in ['mars-test@','mars-test.authors@','mars-test.chairs@']]))
self.assertFalse(any([x in r.content for x in ['ames-test@','ames-test.authors@','ames-test.chairs@']]))
self.assertEqual(r.status_code, 302)
url = urlreverse('ietf.doc.views_doc.email_aliases', kwargs=dict())
login_testing_unauthorized(self, "plain", url)
r = self.client.get(url)
self.assertEqual(r.status_code, 200)
self.assertTrue(all([x in r.content for x in ['mars-test@','mars-test.authors@','mars-test.chairs@']]))
self.assertTrue(all([x in r.content for x in ['ames-test@','ames-test.authors@','ames-test.chairs@']]))
def testExpansions(self):
url = urlreverse('ietf.doc.views_doc.document_email', kwargs=dict(name="draft-ietf-mars-test"))
r = self.client.get(url)
self.assertEqual(r.status_code, 200)
self.assertTrue('draft-ietf-mars-test.all@ietf.org' in r.content)
self.assertTrue('ballot_saved' in r.content)

View file

@ -66,7 +66,7 @@ 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._+-]+)/email-aliases/$', RedirectView.as_view(pattern_name='doc_email', permanent=False),name='doc_specific_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'),

View file

@ -571,19 +571,34 @@ def document_main(request, name, rev=None):
raise Http404
def get_email_aliases(name):
if name:
pattern = re.compile('^expand-(%s)(\..*?)?@.*? +(.*)$'%name)
else:
pattern = re.compile('^expand-(.*?)(\..*?)?@.*? +(.*)$')
aliases = []
with 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 aliases
def document_email(request,name):
doc = get_object_or_404(Document, docalias__name=name)
top = render_document_top(request, doc, "email", name)
aliases = get_email_aliases(name) if doc.type_id=='draft' else None
expansions = gather_relevant_expansions(doc=doc)
return render(request, "doc/document_email.html",
dict(doc=doc,
top=top,
aliases=aliases,
expansions=expansions,
ietf_domain=settings.IETF_DOMAIN,
)
)
@ -999,20 +1014,12 @@ def edit_notify(request, name):
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:
if not name:
# require login for the overview page, but not for the
# document-specific pages handled above
# document-specific pages
if not request.user.is_authenticated():
return redirect('%s?next=%s' % (settings.LOGIN_URL, request.path))
pattern = re.compile('^expand-(.*?)(\..*?)?@.*? +(.*)$')
aliases = []
with 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)})
aliases = get_email_aliases(name)
return render(request,'doc/email_aliases.html',{'aliases':aliases,'ietf_domain':settings.IETF_DOMAIN,'doc':doc})

View file

@ -35,17 +35,19 @@ def gather_relevant_expansions(**kwargs):
doc = kwargs['doc']
relevant.update(MailToken.objects.filter(slug__startswith='doc_').values_list('slug',flat=True))
if doc.stream_id == 'ietf':
relevant.update(['ballot_approved_ietf_stream'])
else:
relevant.update(['pubreq_rfced'])
relevant.update(['doc_state_edited','doc_telechat_details_changed','ballot_deferred','ballot_saved'])
if doc.type_id in ['draft','statchg']:
relevant.update(MailToken.objects.filter(slug__startswith='last_call_').values_list('slug',flat=True))
if doc.type_id == 'draft':
relevant.update(MailToken.objects.filter(slug__startswith='doc_').values_list('slug',flat=True))
relevant.update(['ipr_posted_on_doc',])
if doc.stream_id == 'ietf':
relevant.update(['ballot_approved_ietf_stream'])
else:
relevant.update(['pubreq_rfced'])
if doc.type_id == 'conflrev':
relevant.update(['conflrev_requested','ballot_approved_conflrev'])
if doc.type_id == 'charter':
@ -57,21 +59,6 @@ def gather_relevant_expansions(**kwargs):
rule_list.append((mailtoken.slug,mailtoken.desc,addrs.to,addrs.cc))
return sorted(rule_list)
#def gather_relevant_expansions_recipient(**kwargs):
# relevant_tokens = []
#
# if 'doc' in kwargs:
# relevant_tokens.extend(Recipient.objects.filter(slug__startswith='doc').values_list('slug',flat=True))
#
# rule_dict = {}
#
# for recipient in Recipient.objects.filter(slug__in=relevant_tokens):
# #for recipient in Recipient.objects.all():
# addrs = recipient.gather(**kwargs)
# if addrs:
# rule_dict[recipient.slug] = recipient.gather(**kwargs)
# return sorted(rule_dict.iteritems())
def get_base_ipr_request_address():
return Recipient.objects.get(slug='ipr_requests').gather()[0]

View file

@ -10,6 +10,21 @@
{% origin %}
{{ top|safe }}
{% if aliases %}
<h2>Email Aliases</h2>
<table class="table table-condensed table-striped ietf">
<tbody>
{% for alias in aliases %}
<tr>
<td>{{ doc.name }}{{ alias.alias_type|default:''}}@{{ietf_domain}}</td>
<td>{{ alias.expansion }}</td>
</tr>
{% endfor %}
</tbody>
</table>
{% endif %}
<h2>Recipient Expansions</h2>
<table class="table table-condensed table-striped ietf">