From 9067f88fa7b3933b92af82e4e59d08ba08d77ab8 Mon Sep 17 00:00:00 2001 From: Henrik Levkowetz Date: Wed, 3 Jun 2015 16:52:49 +0000 Subject: [PATCH] Merged in [9650] from rjsparks@nostrum.com: Set the parent for newly created RGs. Be more robust if an RG has no parent. Test creation of an RG. Fixes #1718 and #1719. - Legacy-Id: 9661 Note: SVN reference [9650] has been migrated to Git commit b9bf7594001f0014ff4c2ac3688b431f1fcd39ec --- ietf/group/edit.py | 3 ++- ietf/group/tests_info.py | 28 ++++++++++++++++++++++++++++ ietf/secr/utils/mail.py | 2 +- 3 files changed, 31 insertions(+), 2 deletions(-) diff --git a/ietf/group/edit.py b/ietf/group/edit.py index 5509b04ad..2a749a0c5 100644 --- a/ietf/group/edit.py +++ b/ietf/group/edit.py @@ -63,6 +63,7 @@ class GroupForm(forms.Form): if self.group_type == "rg": self.fields['ad'].widget = forms.HiddenInput() self.fields['parent'].queryset = self.fields['parent'].queryset.filter(acronym="irtf") + self.fields['parent'].initial = self.fields['parent'].queryset.first() self.fields['parent'].widget = forms.HiddenInput() else: self.fields['parent'].queryset = self.fields['parent'].queryset.filter(type="area") @@ -247,7 +248,7 @@ def edit(request, group_type=None, acronym=None, action="edit"): diff('name', "Name") diff('acronym', "Acronym") diff('state', "State") - diff('parent', "IETF Area") + diff('parent', "IETF Area" if group.type=="wg" else "Group parent") diff('list_email', "Mailing list email") diff('list_subscribe', "Mailing list subscribe address") diff('list_archive', "Mailing list archive") diff --git a/ietf/group/tests_info.py b/ietf/group/tests_info.py index 912c302bd..45fb19bbd 100644 --- a/ietf/group/tests_info.py +++ b/ietf/group/tests_info.py @@ -337,6 +337,34 @@ class GroupEditTests(TestCase): self.assertEqual(group.charter.name, "charter-ietf-testwg") self.assertEqual(group.charter.rev, "00-00") + def test_create_rg(self): + + make_test_data() + + url = urlreverse('group_create', kwargs=dict(group_type="rg")) + login_testing_unauthorized(self, "secretary", url) + + irtf = Group.objects.get(acronym='irtf') + num_rgs = len(Group.objects.filter(type="rg")) + + proposed_state = GroupStateName.objects.get(slug="proposed") + + # normal get + r = self.client.get(url) + self.assertEqual(r.status_code, 200) + q = PyQuery(r.content) + self.assertEqual(len(q('form input[name=acronym]')), 1) + self.assertEqual(q('form input[name=parent]').attr('value'),'%s'%irtf.pk) + + r = self.client.post(url, dict(acronym="testrg", name="Testing RG", state=proposed_state.pk, parent=irtf.pk)) + self.assertEqual(r.status_code, 302) + self.assertEqual(len(Group.objects.filter(type="rg")), num_rgs + 1) + group = Group.objects.get(acronym="testrg") + self.assertEqual(group.name, "Testing RG") + self.assertEqual(group.charter.name, "charter-irtf-testrg") + self.assertEqual(group.charter.rev, "00-00") + self.assertEqual(group.parent.acronym,'irtf') + def test_create_based_on_existing_bof(self): make_test_data() diff --git a/ietf/secr/utils/mail.py b/ietf/secr/utils/mail.py index 845c937e8..01133dd27 100644 --- a/ietf/secr/utils/mail.py +++ b/ietf/secr/utils/mail.py @@ -7,7 +7,7 @@ def get_ad_email_list(group): emails = [] if group.type.slug == 'wg': emails.append('%s-ads@tools.ietf.org' % group.acronym) - elif group.type.slug == 'rg': + elif group.type.slug == 'rg' and group.parent: emails.append(group.parent.role_set.filter(name='chair')[0].email.address) return emails