Skip to content

Commit 0769a07

Browse files
committed
Port add delegate, add test, fix bug with first form in delegate
adding not checking whether found persons have a login - Legacy-Id: 3393
1 parent d6c01d7 commit 0769a07

3 files changed

Lines changed: 54 additions & 8 deletions

File tree

ietf/utils/test_data.py

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,16 @@ def make_test_data():
4646
Alias.objects.get_or_create(person=system_person, name=system_person.name)
4747
Email.objects.get_or_create(address="", person=system_person)
4848

49+
# plain IETF'er
50+
u = User.objects.create(username="plain")
51+
p = Person.objects.create(
52+
name="Plain Man",
53+
ascii="Plain Man",
54+
user=u)
55+
email = Email.objects.create(
56+
address="plain@example.com",
57+
person=p)
58+
4959
# ad
5060
u = User.objects.create(username="ad")
5161
ad = p = Person.objects.create(
@@ -123,7 +133,7 @@ def make_test_data():
123133
group=secretariat,
124134
email=email,
125135
)
126-
136+
127137
# draft
128138
draft = Document.objects.create(
129139
name="draft-ietf-test",

ietf/wgchairs/forms.py

Lines changed: 22 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,9 @@
1616

1717
from workflows.models import Transition
1818

19-
from redesign.person.models import Person
19+
from redesign.person.models import Person, Email
20+
from redesign.group.models import Role, RoleName
21+
2022

2123
class RelatedWGForm(forms.Form):
2224

@@ -197,7 +199,7 @@ def save(self):
197199
email = self.cleaned_data.get('email')
198200
if settings.USE_DB_REDESIGN_PROXY_CLASSES:
199201
try:
200-
person = Person.objects.filter(email__address=email).distinct().get()
202+
person = Person.objects.filter(email__address=email).exclude(user=None).distinct().get()
201203
except Person.DoesNotExist:
202204
self.next_form = NotExistDelegateForm(wg=self.wg, user=self.user, email=email, shepherd=self.shepherd)
203205
self.next_form.set_message('doesnotexist', 'There is no user with this email allowed to login to the system')
@@ -229,8 +231,15 @@ def assign_shepherd(self, person):
229231
self.next_form.set_message('success', 'Shepherd assigned successfully')
230232

231233
def create_delegate(self, person):
232-
(delegate, created) = WGDelegate.objects.get_or_create(wg=self.wg,
233-
person=person)
234+
if settings.USE_DB_REDESIGN_PROXY_CLASSES:
235+
created = False
236+
e = Email.objects.get(address=self.cleaned_data.get('email'))
237+
if not Role.objects.filter(name="delegate", group=self.wg, email=e):
238+
delegate, created = Role.objects.get_or_create(
239+
name=RoleName.objects.get(slug="delegate"), group=self.wg, email=e)
240+
else:
241+
(delegate, created) = WGDelegate.objects.get_or_create(wg=self.wg,
242+
person=person)
234243
if not created:
235244
self.set_message('error', 'The email belongs to a person who is already a delegate')
236245
else:
@@ -251,11 +260,17 @@ def __init__(self, *args, **kwargs):
251260
if not self.email:
252261
self.email = self.data.get('email', None)
253262
self.fields['email'].initial = self.email
254-
self.fields['persons'].choices = [(i.pk, unicode(i)) for i in PersonOrOrgInfo.objects.filter(emailaddress__address=self.email, iesglogin__isnull=False).distinct().order_by('first_name')]
263+
if settings.USE_DB_REDESIGN_PROXY_CLASSES:
264+
self.fields['persons'].choices = [(i.pk, unicode(i)) for i in Person.objects.filter(email__address=self.email).exclude(user=None).distinct().order_by('name')]
265+
else:
266+
self.fields['persons'].choices = [(i.pk, unicode(i)) for i in PersonOrOrgInfo.objects.filter(emailaddress__address=self.email, iesglogin__isnull=False).distinct().order_by('first_name')]
255267

256268
def save(self):
257269
person_id = self.cleaned_data.get('persons')
258-
person = PersonOrOrgInfo.objects.get(pk=person_id)
270+
if settings.USE_DB_REDESIGN_PROXY_CLASSES:
271+
person = Person.objects.get(pk=person_id)
272+
else:
273+
person = PersonOrOrgInfo.objects.get(pk=person_id)
259274
if self.shepherd:
260275
self.assign_shepherd(person)
261276
else:
@@ -312,8 +327,8 @@ def save(self):
312327
if settings.DEBUG:
313328
self.next_form.set_message('warning', 'Email was not sent cause tool is in DEBUG mode')
314329
else:
315-
email_list = self.get_email_list()
316330
# this is ugly...
331+
email_list = self.get_email_list()
317332
delegate = email_list[0]
318333
secretariat = email_list[1]
319334
wgchairs = email_list[2:]

ietf/wgchairs/tests.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,27 @@ def test_add_not_existing_delegate(self):
7272
self.assertTrue("Email sent" in r.content)
7373
self.assertEquals(len(mail_outbox), mailbox_before + 3)
7474

75+
def test_add_delegate(self):
76+
make_test_data()
77+
78+
url = urlreverse('manage_delegates', kwargs=dict(acronym="mars"))
79+
login_testing_unauthorized(self, "secretary", url)
80+
81+
# get
82+
r = self.client.get(url)
83+
self.assertEquals(r.status_code, 200)
84+
q = PyQuery(r.content)
85+
self.assertEquals(len(q('form input[name=email]')), 1)
86+
87+
# add existing person
88+
r = self.client.post(url,
89+
dict(email="plain@example.com",
90+
form_type="single"))
91+
self.assertEquals(r.status_code, 200)
92+
q = PyQuery(r.content)
93+
self.assertTrue("new delegate" in r.content)
94+
self.assertTrue(Email.objects.get(address="plain@example.com").person.name in r.content)
95+
7596

7697
if not settings.USE_DB_REDESIGN_PROXY_CLASSES:
7798
# the above tests only work with the new schema

0 commit comments

Comments
 (0)