Port WG Delegate deletion with new test

- Legacy-Id: 3383
This commit is contained in:
Ole Laursen 2011-08-26 17:37:44 +00:00
parent c2dd48ff35
commit 646e8b8615
5 changed files with 158 additions and 163 deletions

View file

@ -92,7 +92,23 @@ def make_test_data():
group=group,
email=wgchair,
)
# group delegate
u = User.objects.create(username="wgdelegate")
p = Person.objects.create(
name="WG Delegate",
ascii="WG Delegate",
user=u
)
email = Email.objects.create(
address="wgdelegate@ietf.org",
person=p)
Role.objects.create(
name_id="delegate",
group=group,
email=email,
)
# secretary
u = User.objects.create(username="secretary")
p = Person.objects.create(

View file

@ -1,6 +1,7 @@
import datetime
from django.db import models
from django.conf import settings
from ietf.idtracker.models import (IETFWG, PersonOrOrgInfo,
InternetDraft)
@ -11,7 +12,7 @@ class WGDelegate(models.Model):
PersonOrOrgInfo,
)
wg = models.ForeignKey(IETFWG)
wg = models.ForeignKey(IETFWG, related_name="old_wgdelegate_set" if settings.USE_DB_REDESIGN_PROXY_CLASSES else None)
def __unicode__(self):
return "%s" % self.person
@ -19,7 +20,6 @@ class WGDelegate(models.Model):
class Meta:
verbose_name = "WG Delegate"
class ProtoWriteUp(models.Model):
person = models.ForeignKey(
PersonOrOrgInfo,
@ -43,3 +43,35 @@ class ProtoWriteUp(models.Model):
blank=False,
null=False,
)
if settings.USE_DB_REDESIGN_PROXY_CLASSES:
from redesign.group.models import Role
class WGDelegateProxy(Role):
#person = models.ForeignKey(PersonOrOrgInfo)
@property
def person(self):
return self.email.person
#wg = models.ForeignKey(IETFWG)
@property
def wg(self):
return self.group
def __unicode__(self):
return u"%s" % self.person
class Meta:
proxy = True
from redesign.doc.models import DocEvent
class ProtoWriteUpProxy(DocEvent):
#person = models.ForeignKey(PersonOrOrgInfo, blank=False, null=False)
#draft = models.ForeignKey(InternetDraft, blank=False, null=False)
#date = models.DateTimeField(default=datetime.datetime.now(), blank=False, null=False)
#writeup = models.TextField(blank=False, null=False)
class Meta:
proxy = True
#WGDelegateOld = WGDelegate
WGDelegate = WGDelegateProxy
ProtoWriteUpOld = ProtoWriteUp
ProtoWriteUp = ProtoWriteUpProxy

51
ietf/wgchairs/tests.py Normal file
View file

@ -0,0 +1,51 @@
import datetime, os, shutil
from django.conf import settings
from django.contrib.auth.models import User
from django.core.urlresolvers import reverse as urlreverse
import django.test
from StringIO import StringIO
from pyquery import PyQuery
from ietf.utils.test_utils import login_testing_unauthorized
from ietf.utils.test_runner import mail_outbox
from ietf.utils.test_data import make_test_data
if settings.USE_DB_REDESIGN_PROXY_CLASSES:
from redesign.person.models import Person, Email
from redesign.group.models import Group, Role
class ManageDelegatesTestCase(django.test.TestCase):
fixtures = ['names']
def test_delete_delegate(self):
make_test_data()
url = urlreverse('manage_delegates', kwargs=dict(acronym="mars"))
login_testing_unauthorized(self, "secretary", url)
delegates = Role.objects.filter(name="delegate", group__acronym="mars")
self.assertTrue(len(delegates) > 0)
# get
r = self.client.get(url)
self.assertEquals(r.status_code, 200)
q = PyQuery(r.content)
self.assertEquals(len(q('form input[name=delete]')), len(delegates))
# delete
r = self.client.post(url,
dict(remove="1",
delete=[d.pk for d in delegates]))
self.assertEquals(r.status_code, 200)
q = PyQuery(r.content)
self.assertEquals(len(q('form input[name=delete]')), 0)
self.assertEquals(Role.objects.filter(name="delegate", group__acronym="mars").count(), 0)
if not settings.USE_DB_REDESIGN_PROXY_CLASSES:
# the above tests only work with the new schema
del ManageDelegatesTestCase

View file

@ -209,6 +209,10 @@ class IETFWG(Group):
d = Dummy()
d.all = self.chairs()
return d
@property
def wgdelegate_set(self):
from ietf.wgchairs.models import WGDelegate
return WGDelegate.objects.filter(group=self, name="delegate")
class Meta:
proxy = True

View file

@ -1,13 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<django-objects version="1.0">
<object pk="yes" model="name.ballotpositionname">
<field type="CharField" name="name">Yes</field>
<object pk="noobj" model="name.ballotpositionname">
<field type="CharField" name="name">No Objection</field>
<field type="TextField" name="desc"></field>
<field type="BooleanField" name="used">1</field>
<field type="IntegerField" name="order">0</field>
</object>
<object pk="noobj" model="name.ballotpositionname">
<field type="CharField" name="name">No Objection</field>
<object pk="yes" model="name.ballotpositionname">
<field type="CharField" name="name">Yes</field>
<field type="TextField" name="desc"></field>
<field type="BooleanField" name="used">1</field>
<field type="IntegerField" name="order">0</field>
@ -54,24 +54,6 @@
<field type="BooleanField" name="used">1</field>
<field type="IntegerField" name="order">0</field>
</object>
<object pk="iana-crd" model="name.docinfotagname">
<field type="CharField" name="name">IANA coordination</field>
<field type="TextField" name="desc">RFC-Editor/IANA Registration Coordination</field>
<field type="BooleanField" name="used">1</field>
<field type="IntegerField" name="order">0</field>
</object>
<object pk="missref" model="name.docinfotagname">
<field type="CharField" name="name">Missing references</field>
<field type="TextField" name="desc">Awaiting missing normative reference</field>
<field type="BooleanField" name="used">1</field>
<field type="IntegerField" name="order">0</field>
</object>
<object pk="fasttrac" model="name.docinfotagname">
<field type="CharField" name="name">FastTrack</field>
<field type="TextField" name="desc"></field>
<field type="BooleanField" name="used">1</field>
<field type="IntegerField" name="order">0</field>
</object>
<object pk="rfc-rev" model="name.docinfotagname">
<field type="CharField" name="name">Review by RFC Editor</field>
<field type="TextField" name="desc"></field>
@ -102,12 +84,6 @@
<field type="BooleanField" name="used">1</field>
<field type="IntegerField" name="order">0</field>
</object>
<object pk="ref" model="name.docinfotagname">
<field type="CharField" name="name">Holding for references</field>
<field type="TextField" name="desc">Holding for normative reference</field>
<field type="BooleanField" name="used">1</field>
<field type="IntegerField" name="order">0</field>
</object>
<object pk="point" model="name.docinfotagname">
<field type="CharField" name="name">Point Raised - writeup needed</field>
<field type="TextField" name="desc">IESG discussions on the document have raised some issues that need to be brought to the attention of the authors/WG, but those issues have not been written down yet. (It is common for discussions during a telechat to result in such situations. An AD may raise a possible issue during a telechat and only decide as a result of that discussion whether the issue is worth formally writing up and bringing to the attention of the authors/WG). A document stays in the "Point Raised - Writeup Needed" state until *ALL* IESG comments that have been raised have been documented.</field>
@ -138,14 +114,14 @@
<field type="BooleanField" name="used">1</field>
<field type="IntegerField" name="order">5</field>
</object>
<object pk="updates" model="name.docrelationshipname">
<field type="CharField" name="name">Updates</field>
<object pk="replaces" model="name.docrelationshipname">
<field type="CharField" name="name">Replaces</field>
<field type="TextField" name="desc"></field>
<field type="BooleanField" name="used">1</field>
<field type="IntegerField" name="order">0</field>
</object>
<object pk="replaces" model="name.docrelationshipname">
<field type="CharField" name="name">Replaces</field>
<object pk="updates" model="name.docrelationshipname">
<field type="CharField" name="name">Updates</field>
<field type="TextField" name="desc"></field>
<field type="BooleanField" name="used">1</field>
<field type="IntegerField" name="order">0</field>
@ -156,20 +132,8 @@
<field type="BooleanField" name="used">1</field>
<field type="IntegerField" name="order">0</field>
</object>
<object pk="reviews" model="name.docrelationshipname">
<field type="CharField" name="name">Reviews</field>
<field type="TextField" name="desc"></field>
<field type="BooleanField" name="used">1</field>
<field type="IntegerField" name="order">0</field>
</object>
<object pk="refs" model="name.docrelationshipname">
<field type="CharField" name="name">References</field>
<field type="TextField" name="desc"></field>
<field type="BooleanField" name="used">1</field>
<field type="IntegerField" name="order">0</field>
</object>
<object pk="rfc" model="name.docstatename">
<field type="CharField" name="name">RFC</field>
<object pk="active" model="name.docstatename">
<field type="CharField" name="name">Active</field>
<field type="TextField" name="desc"></field>
<field type="BooleanField" name="used">1</field>
<field type="IntegerField" name="order">0</field>
@ -180,14 +144,8 @@
<field type="BooleanField" name="used">1</field>
<field type="IntegerField" name="order">0</field>
</object>
<object pk="repl" model="name.docstatename">
<field type="CharField" name="name">Replaced</field>
<field type="TextField" name="desc"></field>
<field type="BooleanField" name="used">1</field>
<field type="IntegerField" name="order">0</field>
</object>
<object pk="active" model="name.docstatename">
<field type="CharField" name="name">Active</field>
<object pk="rfc" model="name.docstatename">
<field type="CharField" name="name">RFC</field>
<field type="TextField" name="desc"></field>
<field type="BooleanField" name="used">1</field>
<field type="IntegerField" name="order">0</field>
@ -198,12 +156,24 @@
<field type="BooleanField" name="used">1</field>
<field type="IntegerField" name="order">0</field>
</object>
<object pk="repl" model="name.docstatename">
<field type="CharField" name="name">Replaced</field>
<field type="TextField" name="desc"></field>
<field type="BooleanField" name="used">1</field>
<field type="IntegerField" name="order">0</field>
</object>
<object pk="ietf-rm" model="name.docstatename">
<field type="CharField" name="name">Withdrawn by IETF</field>
<field type="TextField" name="desc"></field>
<field type="BooleanField" name="used">1</field>
<field type="IntegerField" name="order">0</field>
</object>
<object pk="legacy" model="name.docstreamname">
<field type="CharField" name="name">Legacy</field>
<field type="TextField" name="desc"></field>
<field type="BooleanField" name="used">1</field>
<field type="IntegerField" name="order">0</field>
</object>
<object pk="ietf" model="name.docstreamname">
<field type="CharField" name="name">IETF</field>
<field type="TextField" name="desc"></field>
@ -216,12 +186,6 @@
<field type="BooleanField" name="used">1</field>
<field type="IntegerField" name="order">0</field>
</object>
<object pk="legacy" model="name.docstreamname">
<field type="CharField" name="name">Legacy</field>
<field type="TextField" name="desc"></field>
<field type="BooleanField" name="used">1</field>
<field type="IntegerField" name="order">0</field>
</object>
<object pk="iab" model="name.docstreamname">
<field type="CharField" name="name">IAB</field>
<field type="TextField" name="desc"></field>
@ -234,18 +198,6 @@
<field type="BooleanField" name="used">1</field>
<field type="IntegerField" name="order">0</field>
</object>
<object pk="draft" model="name.doctypename">
<field type="CharField" name="name">Draft</field>
<field type="TextField" name="desc"></field>
<field type="BooleanField" name="used">1</field>
<field type="IntegerField" name="order">0</field>
</object>
<object pk="ext" model="name.doctypename">
<field type="CharField" name="name">External</field>
<field type="TextField" name="desc"></field>
<field type="BooleanField" name="used">1</field>
<field type="IntegerField" name="order">0</field>
</object>
<object pk="agenda" model="name.doctypename">
<field type="CharField" name="name">Agenda</field>
<field type="TextField" name="desc"></field>
@ -264,6 +216,12 @@
<field type="BooleanField" name="used">1</field>
<field type="IntegerField" name="order">0</field>
</object>
<object pk="draft" model="name.doctypename">
<field type="CharField" name="name">Draft</field>
<field type="TextField" name="desc"></field>
<field type="BooleanField" name="used">1</field>
<field type="IntegerField" name="order">0</field>
</object>
<object pk="liai-att" model="name.doctypename">
<field type="CharField" name="name">Liaison Attachment</field>
<field type="TextField" name="desc"></field>
@ -318,15 +276,21 @@
<field type="BooleanField" name="used">1</field>
<field type="IntegerField" name="order">0</field>
</object>
<object pk="ag" model="name.grouptypename">
<field type="CharField" name="name">AG</field>
<field type="TextField" name="desc">Area group</field>
<field type="BooleanField" name="used">1</field>
<field type="IntegerField" name="order">0</field>
</object>
<object pk="wg" model="name.grouptypename">
<field type="CharField" name="name">WG</field>
<field type="TextField" name="desc"></field>
<field type="TextField" name="desc">Working group</field>
<field type="BooleanField" name="used">1</field>
<field type="IntegerField" name="order">0</field>
</object>
<object pk="rg" model="name.grouptypename">
<field type="CharField" name="name">RG</field>
<field type="TextField" name="desc"></field>
<field type="TextField" name="desc">Research group</field>
<field type="BooleanField" name="used">1</field>
<field type="IntegerField" name="order">0</field>
</object>
@ -342,15 +306,9 @@
<field type="BooleanField" name="used">1</field>
<field type="IntegerField" name="order">0</field>
</object>
<object pk="ag" model="name.grouptypename">
<field type="CharField" name="name">AG</field>
<field type="TextField" name="desc"></field>
<field type="BooleanField" name="used">1</field>
<field type="IntegerField" name="order">0</field>
</object>
<object pk="sdo" model="name.grouptypename">
<field type="CharField" name="name">Standards Organization</field>
<field type="TextField" name="desc"></field>
<field type="CharField" name="name">SDO</field>
<field type="TextField" name="desc">Standards organization</field>
<field type="BooleanField" name="used">1</field>
<field type="IntegerField" name="order">0</field>
</object>
@ -534,72 +492,6 @@
<field type="BooleanField" name="used">1</field>
<field type="IntegerField" name="order">0</field>
</object>
<object pk="auth" model="name.rfcdocstatename">
<field type="CharField" name="name">AUTH</field>
<field type="TextField" name="desc">Awaiting author action</field>
<field type="BooleanField" name="used">1</field>
<field type="IntegerField" name="order">0</field>
</object>
<object pk="auth48" model="name.rfcdocstatename">
<field type="CharField" name="name">AUTH48</field>
<field type="TextField" name="desc">Awaiting final author approval</field>
<field type="BooleanField" name="used">1</field>
<field type="IntegerField" name="order">0</field>
</object>
<object pk="edit" model="name.rfcdocstatename">
<field type="CharField" name="name">EDIT</field>
<field type="TextField" name="desc">Approved by the stream manager (e.g., IESG, IAB, IRSG, ISE), awaiting processing and publishing</field>
<field type="BooleanField" name="used">1</field>
<field type="IntegerField" name="order">0</field>
</object>
<object pk="iana-crd" model="name.rfcdocstatename">
<field type="CharField" name="name">IANA</field>
<field type="TextField" name="desc">RFC-Editor/IANA Registration Coordination</field>
<field type="BooleanField" name="used">1</field>
<field type="IntegerField" name="order">0</field>
</object>
<object pk="iesg" model="name.rfcdocstatename">
<field type="CharField" name="name">IESG</field>
<field type="TextField" name="desc">Holding for IESG action</field>
<field type="BooleanField" name="used">1</field>
<field type="IntegerField" name="order">0</field>
</object>
<object pk="isr" model="name.rfcdocstatename">
<field type="CharField" name="name">ISR</field>
<field type="TextField" name="desc">Independent Submission Review by the ISE </field>
<field type="BooleanField" name="used">1</field>
<field type="IntegerField" name="order">0</field>
</object>
<object pk="isr-auth" model="name.rfcdocstatename">
<field type="CharField" name="name">ISR-AUTH</field>
<field type="TextField" name="desc">Independent Submission awaiting author update, or in discussion between author and ISE</field>
<field type="BooleanField" name="used">1</field>
<field type="IntegerField" name="order">0</field>
</object>
<object pk="ref" model="name.rfcdocstatename">
<field type="CharField" name="name">REF</field>
<field type="TextField" name="desc">Holding for normative reference</field>
<field type="BooleanField" name="used">1</field>
<field type="IntegerField" name="order">0</field>
</object>
<object pk="rfc-edit" model="name.rfcdocstatename">
<field type="CharField" name="name">RFC-EDITOR</field>
<field type="TextField" name="desc">Awaiting final RFC Editor review before AUTH48</field>
<field type="BooleanField" name="used">1</field>
<field type="IntegerField" name="order">0</field>
</object>
<object pk="timeout" model="name.rfcdocstatename">
<field type="CharField" name="name">TO</field>
<field type="TextField" name="desc">Time-out period during which the IESG reviews document for conflict/concurrence with other IETF working group work</field>
<field type="BooleanField" name="used">1</field>
<field type="IntegerField" name="order">0</field>
</object>
<object pk="missref" model="name.rfcdocstatename">
<field type="CharField" name="name">MISSREF</field>
<field type="TextField" name="desc">Awaiting missing normative reference</field>
<field type="BooleanField" name="used">1</field>
<field type="IntegerField" name="order">0</field>
</object>
<object pk="ad" model="name.rolename">
<field type="CharField" name="name">Area Director</field>
<field type="TextField" name="desc"></field>
@ -636,12 +528,6 @@
<field type="BooleanField" name="used">1</field>
<field type="IntegerField" name="order">0</field>
</object>
<object pk="dir" model="name.rolename">
<field type="CharField" name="name">Executive Director</field>
<field type="TextField" name="desc"></field>
<field type="BooleanField" name="used">1</field>
<field type="IntegerField" name="order">0</field>
</object>
<object pk="execdir" model="name.rolename">
<field type="CharField" name="name">Executive Director</field>
<field type="TextField" name="desc"></field>
@ -666,6 +552,12 @@
<field type="BooleanField" name="used">1</field>
<field type="IntegerField" name="order">0</field>
</object>
<object pk="delegate" model="name.rolename">
<field type="CharField" name="name">Delegate</field>
<field type="TextField" name="desc"></field>
<field type="BooleanField" name="used">1</field>
<field type="IntegerField" name="order">0</field>
</object>
<object pk="schedw" model="name.sessionstatusname">
<field type="CharField" name="name">Waiting for Scheduling</field>
<field type="TextField" name="desc"></field>
@ -768,16 +660,16 @@
<field type="BooleanField" name="used">1</field>
<field type="IntegerField" name="order">0</field>
</object>
<object pk="other" model="name.timeslottypename">
<field type="CharField" name="name">Other</field>
<field type="TextField" name="desc"></field>
<field type="BooleanField" name="used">1</field>
<field type="IntegerField" name="order">0</field>
</object>
<object pk="plenary" model="name.timeslottypename">
<field type="CharField" name="name">Plenary</field>
<field type="TextField" name="desc"></field>
<field type="BooleanField" name="used">1</field>
<field type="IntegerField" name="order">0</field>
</object>
<object pk="other" model="name.timeslottypename">
<field type="CharField" name="name">Other</field>
<field type="TextField" name="desc"></field>
<field type="BooleanField" name="used">1</field>
<field type="IntegerField" name="order">0</field>
</object>
</django-objects>