Port telechat dates
- Legacy-Id: 3774
This commit is contained in:
parent
498dc38507
commit
de0fc12ce8
|
@ -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"] = ""
|
||||
|
|
|
@ -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)
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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())
|
||||
|
||||
|
|
|
@ -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':
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue