Skip to content

Commit 646e8b8

Browse files
committed
Port WG Delegate deletion with new test
- Legacy-Id: 3383
1 parent c2dd48f commit 646e8b8

5 files changed

Lines changed: 150 additions & 155 deletions

File tree

ietf/utils/test_data.py

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,23 @@ def make_test_data():
9292
group=group,
9393
email=wgchair,
9494
)
95-
95+
96+
# group delegate
97+
u = User.objects.create(username="wgdelegate")
98+
p = Person.objects.create(
99+
name="WG Delegate",
100+
ascii="WG Delegate",
101+
user=u
102+
)
103+
email = Email.objects.create(
104+
address="wgdelegate@ietf.org",
105+
person=p)
106+
Role.objects.create(
107+
name_id="delegate",
108+
group=group,
109+
email=email,
110+
)
111+
96112
# secretary
97113
u = User.objects.create(username="secretary")
98114
p = Person.objects.create(

ietf/wgchairs/models.py

Lines changed: 34 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import datetime
22

33
from django.db import models
4+
from django.conf import settings
45

56
from ietf.idtracker.models import (IETFWG, PersonOrOrgInfo,
67
InternetDraft)
@@ -11,15 +12,14 @@ class WGDelegate(models.Model):
1112
PersonOrOrgInfo,
1213
)
1314

14-
wg = models.ForeignKey(IETFWG)
15+
wg = models.ForeignKey(IETFWG, related_name="old_wgdelegate_set" if settings.USE_DB_REDESIGN_PROXY_CLASSES else None)
1516

1617
def __unicode__(self):
1718
return "%s" % self.person
1819

1920
class Meta:
2021
verbose_name = "WG Delegate"
2122

22-
2323
class ProtoWriteUp(models.Model):
2424
person = models.ForeignKey(
2525
PersonOrOrgInfo,
@@ -43,3 +43,35 @@ class ProtoWriteUp(models.Model):
4343
blank=False,
4444
null=False,
4545
)
46+
47+
if settings.USE_DB_REDESIGN_PROXY_CLASSES:
48+
from redesign.group.models import Role
49+
class WGDelegateProxy(Role):
50+
#person = models.ForeignKey(PersonOrOrgInfo)
51+
@property
52+
def person(self):
53+
return self.email.person
54+
#wg = models.ForeignKey(IETFWG)
55+
@property
56+
def wg(self):
57+
return self.group
58+
59+
def __unicode__(self):
60+
return u"%s" % self.person
61+
62+
class Meta:
63+
proxy = True
64+
65+
from redesign.doc.models import DocEvent
66+
class ProtoWriteUpProxy(DocEvent):
67+
#person = models.ForeignKey(PersonOrOrgInfo, blank=False, null=False)
68+
#draft = models.ForeignKey(InternetDraft, blank=False, null=False)
69+
#date = models.DateTimeField(default=datetime.datetime.now(), blank=False, null=False)
70+
#writeup = models.TextField(blank=False, null=False)
71+
class Meta:
72+
proxy = True
73+
74+
#WGDelegateOld = WGDelegate
75+
WGDelegate = WGDelegateProxy
76+
ProtoWriteUpOld = ProtoWriteUp
77+
ProtoWriteUp = ProtoWriteUpProxy

ietf/wgchairs/tests.py

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
import datetime, os, shutil
2+
3+
from django.conf import settings
4+
from django.contrib.auth.models import User
5+
from django.core.urlresolvers import reverse as urlreverse
6+
import django.test
7+
from StringIO import StringIO
8+
from pyquery import PyQuery
9+
10+
from ietf.utils.test_utils import login_testing_unauthorized
11+
from ietf.utils.test_runner import mail_outbox
12+
from ietf.utils.test_data import make_test_data
13+
14+
if settings.USE_DB_REDESIGN_PROXY_CLASSES:
15+
from redesign.person.models import Person, Email
16+
from redesign.group.models import Group, Role
17+
18+
class ManageDelegatesTestCase(django.test.TestCase):
19+
fixtures = ['names']
20+
21+
def test_delete_delegate(self):
22+
make_test_data()
23+
24+
url = urlreverse('manage_delegates', kwargs=dict(acronym="mars"))
25+
login_testing_unauthorized(self, "secretary", url)
26+
27+
delegates = Role.objects.filter(name="delegate", group__acronym="mars")
28+
self.assertTrue(len(delegates) > 0)
29+
30+
# get
31+
r = self.client.get(url)
32+
self.assertEquals(r.status_code, 200)
33+
q = PyQuery(r.content)
34+
self.assertEquals(len(q('form input[name=delete]')), len(delegates))
35+
36+
# delete
37+
r = self.client.post(url,
38+
dict(remove="1",
39+
delete=[d.pk for d in delegates]))
40+
self.assertEquals(r.status_code, 200)
41+
q = PyQuery(r.content)
42+
self.assertEquals(len(q('form input[name=delete]')), 0)
43+
self.assertEquals(Role.objects.filter(name="delegate", group__acronym="mars").count(), 0)
44+
45+
46+
47+
48+
49+
if not settings.USE_DB_REDESIGN_PROXY_CLASSES:
50+
# the above tests only work with the new schema
51+
del ManageDelegatesTestCase

redesign/group/proxy.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -209,6 +209,10 @@ class Dummy: pass
209209
d = Dummy()
210210
d.all = self.chairs()
211211
return d
212+
@property
213+
def wgdelegate_set(self):
214+
from ietf.wgchairs.models import WGDelegate
215+
return WGDelegate.objects.filter(group=self, name="delegate")
212216

213217
class Meta:
214218
proxy = True

0 commit comments

Comments
 (0)