Port add delegate, add test, fix bug with first form in delegate
adding not checking whether found persons have a login - Legacy-Id: 3393
This commit is contained in:
parent
d6c01d7a48
commit
0769a07756
|
@ -46,6 +46,16 @@ def make_test_data():
|
|||
Alias.objects.get_or_create(person=system_person, name=system_person.name)
|
||||
Email.objects.get_or_create(address="", person=system_person)
|
||||
|
||||
# plain IETF'er
|
||||
u = User.objects.create(username="plain")
|
||||
p = Person.objects.create(
|
||||
name="Plain Man",
|
||||
ascii="Plain Man",
|
||||
user=u)
|
||||
email = Email.objects.create(
|
||||
address="plain@example.com",
|
||||
person=p)
|
||||
|
||||
# ad
|
||||
u = User.objects.create(username="ad")
|
||||
ad = p = Person.objects.create(
|
||||
|
@ -123,7 +133,7 @@ def make_test_data():
|
|||
group=secretariat,
|
||||
email=email,
|
||||
)
|
||||
|
||||
|
||||
# draft
|
||||
draft = Document.objects.create(
|
||||
name="draft-ietf-test",
|
||||
|
|
|
@ -16,7 +16,9 @@ from ietf.utils.mail import send_mail_text
|
|||
|
||||
from workflows.models import Transition
|
||||
|
||||
from redesign.person.models import Person
|
||||
from redesign.person.models import Person, Email
|
||||
from redesign.group.models import Role, RoleName
|
||||
|
||||
|
||||
class RelatedWGForm(forms.Form):
|
||||
|
||||
|
@ -197,7 +199,7 @@ class AddDelegateForm(RelatedWGForm):
|
|||
email = self.cleaned_data.get('email')
|
||||
if settings.USE_DB_REDESIGN_PROXY_CLASSES:
|
||||
try:
|
||||
person = Person.objects.filter(email__address=email).distinct().get()
|
||||
person = Person.objects.filter(email__address=email).exclude(user=None).distinct().get()
|
||||
except Person.DoesNotExist:
|
||||
self.next_form = NotExistDelegateForm(wg=self.wg, user=self.user, email=email, shepherd=self.shepherd)
|
||||
self.next_form.set_message('doesnotexist', 'There is no user with this email allowed to login to the system')
|
||||
|
@ -229,8 +231,15 @@ class AddDelegateForm(RelatedWGForm):
|
|||
self.next_form.set_message('success', 'Shepherd assigned successfully')
|
||||
|
||||
def create_delegate(self, person):
|
||||
(delegate, created) = WGDelegate.objects.get_or_create(wg=self.wg,
|
||||
person=person)
|
||||
if settings.USE_DB_REDESIGN_PROXY_CLASSES:
|
||||
created = False
|
||||
e = Email.objects.get(address=self.cleaned_data.get('email'))
|
||||
if not Role.objects.filter(name="delegate", group=self.wg, email=e):
|
||||
delegate, created = Role.objects.get_or_create(
|
||||
name=RoleName.objects.get(slug="delegate"), group=self.wg, email=e)
|
||||
else:
|
||||
(delegate, created) = WGDelegate.objects.get_or_create(wg=self.wg,
|
||||
person=person)
|
||||
if not created:
|
||||
self.set_message('error', 'The email belongs to a person who is already a delegate')
|
||||
else:
|
||||
|
@ -251,11 +260,17 @@ class MultipleDelegateForm(AddDelegateForm):
|
|||
if not self.email:
|
||||
self.email = self.data.get('email', None)
|
||||
self.fields['email'].initial = self.email
|
||||
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')]
|
||||
if settings.USE_DB_REDESIGN_PROXY_CLASSES:
|
||||
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')]
|
||||
else:
|
||||
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')]
|
||||
|
||||
def save(self):
|
||||
person_id = self.cleaned_data.get('persons')
|
||||
person = PersonOrOrgInfo.objects.get(pk=person_id)
|
||||
if settings.USE_DB_REDESIGN_PROXY_CLASSES:
|
||||
person = Person.objects.get(pk=person_id)
|
||||
else:
|
||||
person = PersonOrOrgInfo.objects.get(pk=person_id)
|
||||
if self.shepherd:
|
||||
self.assign_shepherd(person)
|
||||
else:
|
||||
|
@ -312,8 +327,8 @@ class NotExistDelegateForm(MultipleDelegateForm):
|
|||
if settings.DEBUG:
|
||||
self.next_form.set_message('warning', 'Email was not sent cause tool is in DEBUG mode')
|
||||
else:
|
||||
email_list = self.get_email_list()
|
||||
# this is ugly...
|
||||
email_list = self.get_email_list()
|
||||
delegate = email_list[0]
|
||||
secretariat = email_list[1]
|
||||
wgchairs = email_list[2:]
|
||||
|
|
|
@ -72,6 +72,27 @@ class ManageDelegatesTestCase(django.test.TestCase):
|
|||
self.assertTrue("Email sent" in r.content)
|
||||
self.assertEquals(len(mail_outbox), mailbox_before + 3)
|
||||
|
||||
def test_add_delegate(self):
|
||||
make_test_data()
|
||||
|
||||
url = urlreverse('manage_delegates', kwargs=dict(acronym="mars"))
|
||||
login_testing_unauthorized(self, "secretary", url)
|
||||
|
||||
# get
|
||||
r = self.client.get(url)
|
||||
self.assertEquals(r.status_code, 200)
|
||||
q = PyQuery(r.content)
|
||||
self.assertEquals(len(q('form input[name=email]')), 1)
|
||||
|
||||
# add existing person
|
||||
r = self.client.post(url,
|
||||
dict(email="plain@example.com",
|
||||
form_type="single"))
|
||||
self.assertEquals(r.status_code, 200)
|
||||
q = PyQuery(r.content)
|
||||
self.assertTrue("new delegate" in r.content)
|
||||
self.assertTrue(Email.objects.get(address="plain@example.com").person.name in r.content)
|
||||
|
||||
|
||||
if not settings.USE_DB_REDESIGN_PROXY_CLASSES:
|
||||
# the above tests only work with the new schema
|
||||
|
|
Loading…
Reference in a new issue