Port telechat dates

- Legacy-Id: 3774
This commit is contained in:
Ole Laursen 2011-12-20 13:12:12 +00:00
parent 498dc38507
commit de0fc12ce8
7 changed files with 162 additions and 72 deletions

View file

@ -46,7 +46,7 @@ from redesign.doc.models import *
from redesign.name.models import *
from redesign.group.models import *
from redesign.person.models import *
from ietf.iesg.models import TelechatDates
from ietf.iesg.models import TelechatDate
from ietf.utils.test_utils import SimpleUrlTestCase, RealDatabaseTest, login_testing_unauthorized
from ietf.utils.test_data import make_test_data
from ietf.utils.mail import outbox
@ -225,21 +225,21 @@ class EditInfoTestCase(django.test.TestCase):
# add to telechat
self.assertTrue(not draft.latest_event(TelechatDocEvent, "scheduled_for_telechat"))
data["telechat_date"] = TelechatDates.objects.all()[0].date1.isoformat()
data["telechat_date"] = TelechatDate.objects.active()[0].date.isoformat()
r = self.client.post(url, data)
self.assertEquals(r.status_code, 302)
draft = Document.objects.get(name=draft.name)
self.assertTrue(draft.latest_event(TelechatDocEvent, "scheduled_for_telechat"))
self.assertEquals(draft.latest_event(TelechatDocEvent, "scheduled_for_telechat").telechat_date, TelechatDates.objects.all()[0].date1)
self.assertEquals(draft.latest_event(TelechatDocEvent, "scheduled_for_telechat").telechat_date, TelechatDate.objects.active()[0].date)
# change telechat
data["telechat_date"] = TelechatDates.objects.all()[0].date2.isoformat()
data["telechat_date"] = TelechatDate.objects.active()[1].date.isoformat()
r = self.client.post(url, data)
self.assertEquals(r.status_code, 302)
draft = Document.objects.get(name=draft.name)
self.assertEquals(draft.latest_event(TelechatDocEvent, "scheduled_for_telechat").telechat_date, TelechatDates.objects.all()[0].date2)
self.assertEquals(draft.latest_event(TelechatDocEvent, "scheduled_for_telechat").telechat_date, TelechatDate.objects.active()[1].date)
# remove from agenda
data["telechat_date"] = ""

View file

@ -1,16 +1,19 @@
#coding: utf-8
from django.contrib import admin
from ietf.iesg.models import *
class TelechatAgendaItemAdmin(admin.ModelAdmin):
pass
admin.site.register(TelechatAgendaItem, TelechatAgendaItemAdmin)
class TelechatDatesAdmin(admin.ModelAdmin):
pass
admin.site.register(TelechatDates, TelechatDatesAdmin)
if not settings.USE_DB_REDESIGN_PROXY_CLASSES:
class TelechatDatesAdmin(admin.ModelAdmin):
pass
admin.site.register(TelechatDates, TelechatDatesAdmin)
class WGActionAdmin(admin.ModelAdmin):
pass
admin.site.register(WGAction, WGActionAdmin)
admin.site.register(TelechatDate)

View file

@ -33,7 +33,9 @@
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
from django.db import models
from django.conf import settings
from ietf.idtracker.models import Acronym
import datetime
# This table is not used by any code right now, and according to Glen,
# probably not currently (Aug 2009) maintained by the secretariat.
@ -121,3 +123,77 @@ class WGAction(models.Model):
db_table = 'group_internal'
ordering = ['-telechat_date']
verbose_name = "WG Action"
def next_telechat_date():
dates = TelechatDate.objects.order_by("-date")
if dates:
return dates[0].date + datetime.timedelta(days=14)
return datetime.date.today()
class TelechatDateManager(models.Manager):
def active(self):
return self.get_query_set().filter(date__gte=datetime.date.today())
class TelechatDate(models.Model):
objects = TelechatDateManager()
date = models.DateField(default=next_telechat_date)
def __unicode__(self):
return self.date.isoformat()
class Meta:
ordering = ['-date']
class TelechatDatesProxyDummy(object):
def all(self):
class Dummy(object):
def __getitem__(self, i):
return self
def get_date(self, index):
if not hasattr(self, "date_cache"):
self.date_cache = TelechatDate.objects.active().order_by("date")
if index < len(self.date_cache):
return self.date_cache[index].date
return None
#date1 = models.DateField(primary_key=True, null=True, blank= True)
@property
def date1(self):
return self.get_date(0)
#date2 = models.DateField(null=True, blank=True)
@property
def date2(self):
return self.get_date(1)
#date3 = models.DateField(null=True, blank=True)
@property
def date3(self):
return self.get_date(2)
#date4 = models.DateField(null=True, blank=True)
@property
def date4(self):
return self.get_date(3)
def dates(self):
l = []
if self.date1:
l.append(self.date1)
if self.date2:
l.append(self.date2)
if self.date3:
l.append(self.date3)
if self.date4:
l.append(self.date4)
return l
return Dummy()
class TelechatDatesProxy(object):
objects = TelechatDatesProxyDummy()
if settings.USE_DB_REDESIGN_PROXY_CLASSES:
TelechatDatesOld = TelechatDates
TelechatDates = TelechatDatesProxy

View file

@ -69,7 +69,7 @@ class RescheduleOnAgendaTestCaseREDESIGN(django.test.TestCase):
e = TelechatDocEvent(type="scheduled_for_telechat")
e.doc = draft
e.by = Person.objects.get(name="Aread Irector")
e.telechat_date = TelechatDates.objects.all()[0].date1
e.telechat_date = TelechatDate.objects.active()[0].date
e.returning_item = True
e.save()
@ -90,16 +90,16 @@ class RescheduleOnAgendaTestCaseREDESIGN(django.test.TestCase):
# reschedule
events_before = draft.docevent_set.count()
d = TelechatDates.objects.all()[0].dates()[2]
d = TelechatDate.objects.active()[3].date
r = self.client.post(url, { '%s-telechat_date' % form_id: d.strftime("%Y-%m-%d"),
r = self.client.post(url, { '%s-telechat_date' % form_id: d.isoformat(),
'%s-clear_returning_item' % form_id: "1" })
self.assertEquals(r.status_code, 200)
# check that it moved below the right header in the DOM on the
# agenda docs page
d_header_pos = r.content.find("IESG telechat %s" % d.strftime("%Y-%m-%d"))
d_header_pos = r.content.find("IESG telechat %s" % d.isoformat())
draft_pos = r.content.find(draft.name)
self.assertTrue(d_header_pos < draft_pos)
@ -153,55 +153,56 @@ class ManageTelechatDatesTestCase(django.test.TestCase):
self.assertTrue(dates.date4 == new_date)
self.assertTrue(dates.date1 == old_date2)
class ManageTelechatDatesTestCaseREDESIGN(django.test.TestCase):
fixtures = ['names']
# class ManageTelechatDatesTestCaseREDESIGN(django.test.TestCase):
# fixtures = ['names']
def test_set_dates(self):
from ietf.utils.test_data import make_test_data
make_test_data()
# def test_set_dates(self):
# from ietf.utils.test_data import make_test_data
# make_test_data()
dates = TelechatDates.objects.all()[0]
url = urlreverse('ietf.iesg.views.telechat_dates')
login_testing_unauthorized(self, "secretary", url)
# dates = TelechatDates.objects.all()[0]
# url = urlreverse('ietf.iesg.views.telechat_dates')
# login_testing_unauthorized(self, "secretary", url)
# normal get
r = self.client.get(url)
self.assertEquals(r.status_code, 200)
q = PyQuery(r.content)
self.assertEquals(len(q('form input[name=date1]')), 1)
# # normal get
# r = self.client.get(url)
# self.assertEquals(r.status_code, 200)
# q = PyQuery(r.content)
# self.assertEquals(len(q('form input[name=date1]')), 1)
# post
new_date = dates.date1 + timedelta(days=7)
# # post
# new_date = dates.date1 + timedelta(days=7)
r = self.client.post(url, dict(date1=new_date.isoformat(),
date2=new_date.isoformat(),
date3=new_date.isoformat(),
date4=new_date.isoformat(),
))
self.assertEquals(r.status_code, 200)
# r = self.client.post(url, dict(date1=new_date.isoformat(),
# date2=new_date.isoformat(),
# date3=new_date.isoformat(),
# date4=new_date.isoformat(),
# ))
# self.assertEquals(r.status_code, 200)
dates = TelechatDates.objects.all()[0]
self.assertTrue(dates.date1 == new_date)
# dates = TelechatDates.objects.all()[0]
# self.assertTrue(dates.date1 == new_date)
def test_rollup_dates(self):
from ietf.utils.test_data import make_test_data
make_test_data()
# def test_rollup_dates(self):
# from ietf.utils.test_data import make_test_data
# make_test_data()
dates = TelechatDates.objects.all()[0]
url = urlreverse('ietf.iesg.views.telechat_dates')
login_testing_unauthorized(self, "secretary", url)
# dates = TelechatDates.objects.all()[0]
# url = urlreverse('ietf.iesg.views.telechat_dates')
# login_testing_unauthorized(self, "secretary", url)
old_date2 = dates.date2
new_date = dates.date4 + timedelta(days=14)
r = self.client.post(url, dict(rollup_dates="1"))
self.assertEquals(r.status_code, 200)
# old_date2 = dates.date2
# new_date = dates.date4 + timedelta(days=14)
# r = self.client.post(url, dict(rollup_dates="1"))
# self.assertEquals(r.status_code, 200)
dates = TelechatDates.objects.all()[0]
self.assertTrue(dates.date4 == new_date)
self.assertTrue(dates.date1 == old_date2)
# dates = TelechatDates.objects.all()[0]
# self.assertTrue(dates.date4 == new_date)
# self.assertTrue(dates.date1 == old_date2)
if settings.USE_DB_REDESIGN_PROXY_CLASSES:
ManageTelechatDatesTestCase = ManageTelechatDatesTestCaseREDESIGN
#ManageTelechatDatesTestCase = ManageTelechatDatesTestCaseREDESIGN
del ManageTelechatDatesTestCase
class WorkingGroupActionsTestCase(django.test.TestCase):
fixtures = ['base', 'wgactions']
@ -380,22 +381,22 @@ class WorkingGroupActionsTestCaseREDESIGN(django.test.TestCase):
self.assertEquals(len(q('form select[name=telechat_date]')), 1)
# change
dates = TelechatDates.objects.all()[0]
dates = TelechatDate.objects.active()
token_name = Person.objects.get(name="Ad No1").name_parts()[1]
old = wga.pk
r = self.client.post(url, dict(status_date=dates.date1.isoformat(),
r = self.client.post(url, dict(status_date=dates[0].date.isoformat(),
token_name=token_name,
category="23",
note="Testing.",
telechat_date=dates.date4.isoformat()))
telechat_date=dates[3].date.isoformat()))
self.assertEquals(r.status_code, 302)
wga = WGAction.objects.get(pk=old)
self.assertEquals(wga.status_date, dates.date1)
self.assertEquals(wga.status_date, dates[0].date)
self.assertEquals(wga.token_name, token_name)
self.assertEquals(wga.category, 23)
self.assertEquals(wga.note, "Testing.")
self.assertEquals(wga.telechat_date, dates.date4)
self.assertEquals(wga.telechat_date, dates[3].date)
def test_add_possible_wg(self):
from ietf.utils.test_data import make_test_data
@ -431,14 +432,14 @@ class WorkingGroupActionsTestCaseREDESIGN(django.test.TestCase):
self.assertEquals(len(q('form select[name=telechat_date]')), 1)
wgas_before = WGAction.objects.all().count()
dates = TelechatDates.objects.all()[0]
dates = TelechatDate.objects.active()
token_name = Person.objects.get(name="Ad No1").name_parts()[1]
r = self.client.post(add_url,
dict(status_date=dates.date1.isoformat(),
dict(status_date=dates[0].date.isoformat(),
token_name=token_name,
category="23",
note="Testing.",
telechat_date=dates.date4.isoformat()))
telechat_date=dates[3].date.isoformat()))
self.assertEquals(r.status_code, 302)
self.assertEquals(wgas_before + 1, WGAction.objects.all().count())

View file

@ -536,13 +536,17 @@ def discusses(request):
return direct_to_template(request, 'iesg/discusses.html', {'docs':res})
class TelechatDatesForm(forms.ModelForm):
class Meta:
model = TelechatDates
fields = ['date1', 'date2', 'date3', 'date4']
if not settings.USE_DB_REDESIGN_PROXY_CLASSES:
class TelechatDatesForm(forms.ModelForm):
class Meta:
model = TelechatDates
fields = ['date1', 'date2', 'date3', 'date4']
@group_required('Secretariat')
def telechat_dates(request):
if settings.USE_DB_REDESIGN_PROXY_CLASSES:
return HttpResponseRedirect("/admin/iesg/telechatdate/")
dates = TelechatDates.objects.all()[0]
if request.method == 'POST':

View file

@ -1,6 +1,6 @@
from django.contrib.auth.models import User
from ietf.iesg.models import TelechatDates, WGAction
from ietf.iesg.models import TelechatDate, WGAction
from ietf.ipr.models import IprDetail, IprDocAlias
from ietf.meeting.models import Meeting
from redesign.doc.models import *
@ -226,12 +226,11 @@ def make_test_data():
# telechat dates
t = datetime.date.today()
dates = TelechatDates(date1=t,
date2=t + datetime.timedelta(days=7),
date3=t + datetime.timedelta(days=14),
date4=t + datetime.timedelta(days=21),
)
super(dates.__class__, dates).save(force_insert=True) # work-around hard-coded save block
old = TelechatDate.objects.create(date=t - datetime.timedelta(days=14)).date
date1 = TelechatDate.objects.create(date=t).date
date2 = TelechatDate.objects.create(date=t + datetime.timedelta(days=14)).date
date3 = TelechatDate.objects.create(date=t + datetime.timedelta(days=14 * 2)).date
date4 = TelechatDate.objects.create(date=t + datetime.timedelta(days=14 * 3)).date
# WG Actions
group = Group.objects.create(
@ -248,7 +247,7 @@ def make_test_data():
agenda=1,
token_name="Aread",
category=13,
telechat_date=dates.date2
telechat_date=date2
)
# Meeting

View file

@ -21,9 +21,10 @@ from redesign.name.utils import name
from redesign.importing.utils import old_person_to_person
from ietf.idtracker.models import AreaGroup, IETFWG, Area, AreaGroup, Acronym, AreaWGURL, IRTF, ChairsHistory, Role, AreaDirector
from ietf.liaisons.models import SDOs
from ietf.iesg.models import TelechatDates, TelechatDate
import workflows.utils
# imports IETFWG, Area, AreaGroup, Acronym, IRTF, AreaWGURL, SDOs
# imports IETFWG, Area, AreaGroup, Acronym, IRTF, AreaWGURL, SDOs, TelechatDates
# also creates nomcom groups
@ -116,6 +117,13 @@ iepg_group.save()
system = Person.objects.get(name="(System)")
for o in TelechatDates.objects.all():
print "importing TelechatDates"
for x in range(1, 5):
d = getattr(o, "date%s" % x)
if d:
TelechatDate.objects.get_or_create(date=d)
# NomCom
for o in ChairsHistory.objects.filter(chair_type=Role.NOMCOM_CHAIR).order_by("start_year"):
print "importing ChairsHistory/Nomcom", o.pk, "nomcom%s" % o.start_year
@ -231,7 +239,6 @@ for o in Area.objects.all():
# FIXME: missing fields from old: extra_email_addresses
# IETFWG, AreaGroup
for o in IETFWG.objects.all().order_by("pk"):
print "importing IETFWG", o.pk, o.group_acronym.acronym