Moved doc-specific email aliases onto the email tab for the document
- Legacy-Id: 10057
This commit is contained in:
parent
9abd670587
commit
46c5b3ff64
|
@ -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)
|
||||
|
|
|
@ -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'),
|
||||
|
|
|
@ -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})
|
||||
|
||||
|
|
|
@ -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]
|
||||
|
||||
|
|
|
@ -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">
|
||||
|
|
Loading…
Reference in a new issue