Added dealing with /wg/foo/email-aliases, /wg/email-aliases, and similar for /rg. Added an initial test suite for all invocations of the email_alias views. Commit ready for merge.
- Legacy-Id: 9083
This commit is contained in:
parent
79dda88337
commit
a208803e82
|
@ -1,3 +1,4 @@
|
|||
import os
|
||||
import datetime
|
||||
import sys
|
||||
if sys.version_info[0] == 2 and sys.version_info[1] < 7:
|
||||
|
@ -5,8 +6,10 @@ if sys.version_info[0] == 2 and sys.version_info[1] < 7:
|
|||
else:
|
||||
import unittest
|
||||
from pyquery import PyQuery
|
||||
from tempfile import NamedTemporaryFile
|
||||
|
||||
from django.core.urlresolvers import reverse as urlreverse
|
||||
from django.conf import settings
|
||||
|
||||
from ietf.doc.models import ( Document, DocAlias, DocRelationshipName, RelatedDocument, State,
|
||||
DocEvent, BallotPositionDocEvent, LastCallDocEvent, WriteupDocEvent, save_document_in_history )
|
||||
|
@ -472,3 +475,46 @@ class ReferencesTest(TestCase):
|
|||
self.assertEquals(r.status_code, 200)
|
||||
self.assertTrue(doc1.name in r.content)
|
||||
|
||||
|
||||
class EmailAliasesTests(TestCase):
|
||||
|
||||
def setUp(self):
|
||||
make_test_data()
|
||||
self.doc_alias_file = NamedTemporaryFile(delete=False)
|
||||
self.doc_alias_file.write("""# Generated by hand at 2015-02-12_16:26:45
|
||||
virtual.ietf.org anything
|
||||
draft-ietf-mars-test@ietf.org xfilter-draft-ietf-mars-test
|
||||
expand-draft-ietf-mars-test@virtual.ietf.org mars-author@example.com, mars-collaborator@example.com
|
||||
draft-ietf-mars-test.authors@ietf.org xfilter-draft-ietf-mars-test.authors
|
||||
expand-draft-ietf-mars-test.authors@virtual.ietf.org mars-author@example.mars, mars-collaborator@example.mars
|
||||
draft-ietf-mars-test.chairs@ietf.org xfilter-draft-ietf-mars-test.chairs
|
||||
expand-draft-ietf-mars-test.chairs@virtual.ietf.org mars-chair@example.mars
|
||||
draft-ietf-mars-test.all@ietf.org xfilter-draft-ietf-mars-test.all
|
||||
expand-draft-ietf-mars-test.all@virtual.ietf.org mars-author@example.mars, mars-collaborator@example.mars, mars-chair@example.mars
|
||||
draft-ietf-ames-test@ietf.org xfilter-draft-ietf-ames-test
|
||||
expand-draft-ietf-ames-test@virtual.ietf.org ames-author@example.com, ames-collaborator@example.com
|
||||
draft-ietf-ames-test.authors@ietf.org xfilter-draft-ietf-ames-test.authors
|
||||
expand-draft-ietf-ames-test.authors@virtual.ietf.org ames-author@example.ames, ames-collaborator@example.ames
|
||||
draft-ietf-ames-test.chairs@ietf.org xfilter-draft-ietf-ames-test.chairs
|
||||
expand-draft-ietf-ames-test.chairs@virtual.ietf.org ames-chair@example.ames
|
||||
draft-ietf-ames-test.all@ietf.org xfilter-draft-ietf-ames-test.all
|
||||
expand-draft-ietf-ames-test.all@virtual.ietf.org ames-author@example.ames, ames-collaborator@example.ames, ames-chair@example.ames
|
||||
|
||||
""")
|
||||
self.doc_alias_file.close()
|
||||
settings.DRAFT_VIRTUAL_PATH = self.doc_alias_file.name
|
||||
|
||||
def tearDown(self):
|
||||
os.unlink(self.doc_alias_file.name)
|
||||
|
||||
def testAliases(self):
|
||||
url = urlreverse('ietf.doc.views_doc.email_aliases', kwargs=dict())
|
||||
r = self.client.get(url)
|
||||
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@']]))
|
||||
|
||||
url = urlreverse('ietf.doc.views_doc.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@']]))
|
||||
|
||||
|
|
|
@ -624,8 +624,8 @@ def dependencies_pdf(request, acronym, group_type=None):
|
|||
|
||||
return HttpResponse(pdf, content_type='application/pdf')
|
||||
|
||||
def email_aliases(request, acronym=None):
|
||||
group = get_group_or_404(acronym,None) if acronym else None
|
||||
def email_aliases(request, acronym=None, group_type=None):
|
||||
group = get_group_or_404(acronym,group_type) if acronym else None
|
||||
|
||||
if acronym:
|
||||
pattern = re.compile('expand-(%s)(-\w+)@.*? +(.*)$'%acronym)
|
||||
|
@ -637,7 +637,8 @@ def email_aliases(request, acronym=None):
|
|||
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)})
|
||||
if acronym or not group_type or Group.objects.filter(acronym=m.group(1),type__slug=group_type):
|
||||
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})
|
||||
|
||||
|
|
|
@ -5,6 +5,7 @@ import json
|
|||
import datetime
|
||||
|
||||
from pyquery import PyQuery
|
||||
from tempfile import NamedTemporaryFile
|
||||
import debug # pyflakes:ignore
|
||||
|
||||
from django.conf import settings
|
||||
|
@ -951,3 +952,44 @@ class CustomizeWorkflowTests(TestCase):
|
|||
self.assertEqual(len(q('form').find('input[name=tag][value="%s"]' % tag.pk).parents("form").find("input[name=active]")), 1)
|
||||
group = Group.objects.get(acronym=group.acronym)
|
||||
self.assertTrue(tag in group.unused_tags.all())
|
||||
|
||||
class EmailAliasesTests(TestCase):
|
||||
|
||||
def setUp(self):
|
||||
make_test_data()
|
||||
self.group_alias_file = NamedTemporaryFile(delete=False)
|
||||
self.group_alias_file.write("""# Generated by hand at 2015-02-12_16:30:52
|
||||
virtual.ietf.org anything
|
||||
mars-ads@ietf.org xfilter-mars-ads
|
||||
expand-mars-ads@virtual.ietf.org aread@ietf.org
|
||||
mars-chairs@ietf.org xfilter-mars-chairs
|
||||
expand-mars-chairs@virtual.ietf.org mars_chair@ietf.org
|
||||
ames-ads@ietf.org xfilter-mars-ads
|
||||
expand-ames-ads@virtual.ietf.org aread@ietf.org
|
||||
ames-chairs@ietf.org xfilter-mars-chairs
|
||||
expand-ames-chairs@virtual.ietf.org mars_chair@ietf.org
|
||||
""")
|
||||
self.group_alias_file.close()
|
||||
settings.GROUP_VIRTUAL_PATH = self.group_alias_file.name
|
||||
|
||||
def tearDown(self):
|
||||
os.unlink(self.group_alias_file.name)
|
||||
|
||||
def testNothing(self):
|
||||
url = urlreverse('ietf.group.info.email_aliases', kwargs=dict())
|
||||
r = self.client.get(url)
|
||||
self.assertTrue(all([x in r.content for x in ['mars-ads@','mars-chairs@','ames-ads@','ames-chairs@']]))
|
||||
|
||||
url = urlreverse('ietf.group.info.email_aliases', kwargs=dict(acronym="mars"))
|
||||
r = self.client.get(url)
|
||||
self.assertTrue(all([x in r.content for x in ['mars-ads@','mars-chairs@']]))
|
||||
self.assertFalse(any([x in r.content for x in ['ames-ads@','ames-chairs@']]))
|
||||
|
||||
url = urlreverse('ietf.group.info.email_aliases', kwargs=dict(group_type="wg"))
|
||||
r = self.client.get(url)
|
||||
self.assertTrue('mars-ads@' in r.content)
|
||||
|
||||
url = urlreverse('ietf.group.info.email_aliases', kwargs=dict(group_type="rg"))
|
||||
r = self.client.get(url)
|
||||
self.assertFalse('mars-ads@' in r.content)
|
||||
|
||||
|
|
|
@ -17,6 +17,7 @@ urlpatterns = patterns('',
|
|||
(r'^chartering/$', RedirectView.as_view(url='/group/chartering/')),
|
||||
(r'^chartering/create/$', RedirectView.as_view(url='/group/chartering/create/%(group_type)s/')),
|
||||
(r'^bofs/$', info.bofs),
|
||||
(r'^email-aliases/$', 'ietf.group.info.email_aliases'),
|
||||
(r'^bofs/create/$', edit.edit, {'action': "create"}, "bof_create"),
|
||||
(r'^(?P<acronym>[a-zA-Z0-9-._]+)/documents/txt/$', info.group_documents_txt),
|
||||
(r'^(?P<acronym>[a-zA-Z0-9-._]+)/$', info.group_home, None, "group_home"),
|
||||
|
@ -33,4 +34,5 @@ urlpatterns = patterns('',
|
|||
(r'^(?P<acronym>[a-zA-Z0-9-._]+)/milestones/charter/reset/$', milestones.reset_charter_milestones, None, "group_reset_charter_milestones"),
|
||||
(r'^(?P<acronym>[a-zA-Z0-9-._]+)/ajax/searchdocs/$', milestones.ajax_search_docs, None, "group_ajax_search_docs"),
|
||||
(r'^(?P<acronym>[a-zA-Z0-9-._]+)/workflow/$', edit.customize_workflow),
|
||||
(r'^(?P<acronym>[A-Za-z0-9._+-]+)/email-aliases/$', 'ietf.group.info.email_aliases'),
|
||||
)
|
||||
|
|
Loading…
Reference in a new issue