Skip to content

Commit de0fc12

Browse files
committed
Port telechat dates
- Legacy-Id: 3774
1 parent 498dc38 commit de0fc12

7 files changed

Lines changed: 162 additions & 72 deletions

File tree

ietf/idrfc/testsREDESIGN.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@
4646
from redesign.name.models import *
4747
from redesign.group.models import *
4848
from redesign.person.models import *
49-
from ietf.iesg.models import TelechatDates
49+
from ietf.iesg.models import TelechatDate
5050
from ietf.utils.test_utils import SimpleUrlTestCase, RealDatabaseTest, login_testing_unauthorized
5151
from ietf.utils.test_data import make_test_data
5252
from ietf.utils.mail import outbox
@@ -225,21 +225,21 @@ def test_edit_telechat_date(self):
225225

226226
# add to telechat
227227
self.assertTrue(not draft.latest_event(TelechatDocEvent, "scheduled_for_telechat"))
228-
data["telechat_date"] = TelechatDates.objects.all()[0].date1.isoformat()
228+
data["telechat_date"] = TelechatDate.objects.active()[0].date.isoformat()
229229
r = self.client.post(url, data)
230230
self.assertEquals(r.status_code, 302)
231231

232232
draft = Document.objects.get(name=draft.name)
233233
self.assertTrue(draft.latest_event(TelechatDocEvent, "scheduled_for_telechat"))
234-
self.assertEquals(draft.latest_event(TelechatDocEvent, "scheduled_for_telechat").telechat_date, TelechatDates.objects.all()[0].date1)
234+
self.assertEquals(draft.latest_event(TelechatDocEvent, "scheduled_for_telechat").telechat_date, TelechatDate.objects.active()[0].date)
235235

236236
# change telechat
237-
data["telechat_date"] = TelechatDates.objects.all()[0].date2.isoformat()
237+
data["telechat_date"] = TelechatDate.objects.active()[1].date.isoformat()
238238
r = self.client.post(url, data)
239239
self.assertEquals(r.status_code, 302)
240240

241241
draft = Document.objects.get(name=draft.name)
242-
self.assertEquals(draft.latest_event(TelechatDocEvent, "scheduled_for_telechat").telechat_date, TelechatDates.objects.all()[0].date2)
242+
self.assertEquals(draft.latest_event(TelechatDocEvent, "scheduled_for_telechat").telechat_date, TelechatDate.objects.active()[1].date)
243243

244244
# remove from agenda
245245
data["telechat_date"] = ""

ietf/iesg/admin.py

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,19 @@
11
#coding: utf-8
22
from django.contrib import admin
33
from ietf.iesg.models import *
4-
4+
55
class TelechatAgendaItemAdmin(admin.ModelAdmin):
66
pass
77
admin.site.register(TelechatAgendaItem, TelechatAgendaItemAdmin)
88

9-
class TelechatDatesAdmin(admin.ModelAdmin):
10-
pass
11-
admin.site.register(TelechatDates, TelechatDatesAdmin)
9+
if not settings.USE_DB_REDESIGN_PROXY_CLASSES:
10+
class TelechatDatesAdmin(admin.ModelAdmin):
11+
pass
12+
admin.site.register(TelechatDates, TelechatDatesAdmin)
1213

1314
class WGActionAdmin(admin.ModelAdmin):
1415
pass
1516
admin.site.register(WGAction, WGActionAdmin)
1617

18+
admin.site.register(TelechatDate)
19+

ietf/iesg/models.py

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,9 @@
3333
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
3434

3535
from django.db import models
36+
from django.conf import settings
3637
from ietf.idtracker.models import Acronym
38+
import datetime
3739

3840
# This table is not used by any code right now, and according to Glen,
3941
# probably not currently (Aug 2009) maintained by the secretariat.
@@ -121,3 +123,77 @@ class Meta:
121123
db_table = 'group_internal'
122124
ordering = ['-telechat_date']
123125
verbose_name = "WG Action"
126+
127+
128+
def next_telechat_date():
129+
dates = TelechatDate.objects.order_by("-date")
130+
if dates:
131+
return dates[0].date + datetime.timedelta(days=14)
132+
return datetime.date.today()
133+
134+
class TelechatDateManager(models.Manager):
135+
def active(self):
136+
return self.get_query_set().filter(date__gte=datetime.date.today())
137+
138+
class TelechatDate(models.Model):
139+
objects = TelechatDateManager()
140+
141+
date = models.DateField(default=next_telechat_date)
142+
143+
def __unicode__(self):
144+
return self.date.isoformat()
145+
146+
class Meta:
147+
ordering = ['-date']
148+
149+
class TelechatDatesProxyDummy(object):
150+
def all(self):
151+
class Dummy(object):
152+
def __getitem__(self, i):
153+
return self
154+
155+
def get_date(self, index):
156+
if not hasattr(self, "date_cache"):
157+
self.date_cache = TelechatDate.objects.active().order_by("date")
158+
159+
if index < len(self.date_cache):
160+
return self.date_cache[index].date
161+
return None
162+
163+
#date1 = models.DateField(primary_key=True, null=True, blank= True)
164+
@property
165+
def date1(self):
166+
return self.get_date(0)
167+
#date2 = models.DateField(null=True, blank=True)
168+
@property
169+
def date2(self):
170+
return self.get_date(1)
171+
#date3 = models.DateField(null=True, blank=True)
172+
@property
173+
def date3(self):
174+
return self.get_date(2)
175+
#date4 = models.DateField(null=True, blank=True)
176+
@property
177+
def date4(self):
178+
return self.get_date(3)
179+
180+
def dates(self):
181+
l = []
182+
if self.date1:
183+
l.append(self.date1)
184+
if self.date2:
185+
l.append(self.date2)
186+
if self.date3:
187+
l.append(self.date3)
188+
if self.date4:
189+
l.append(self.date4)
190+
return l
191+
192+
return Dummy()
193+
194+
class TelechatDatesProxy(object):
195+
objects = TelechatDatesProxyDummy()
196+
197+
if settings.USE_DB_REDESIGN_PROXY_CLASSES:
198+
TelechatDatesOld = TelechatDates
199+
TelechatDates = TelechatDatesProxy

ietf/iesg/tests.py

Lines changed: 50 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ def test_reschedule(self):
6969
e = TelechatDocEvent(type="scheduled_for_telechat")
7070
e.doc = draft
7171
e.by = Person.objects.get(name="Aread Irector")
72-
e.telechat_date = TelechatDates.objects.all()[0].date1
72+
e.telechat_date = TelechatDate.objects.active()[0].date
7373
e.returning_item = True
7474
e.save()
7575

@@ -90,16 +90,16 @@ def test_reschedule(self):
9090

9191
# reschedule
9292
events_before = draft.docevent_set.count()
93-
d = TelechatDates.objects.all()[0].dates()[2]
93+
d = TelechatDate.objects.active()[3].date
9494

95-
r = self.client.post(url, { '%s-telechat_date' % form_id: d.strftime("%Y-%m-%d"),
95+
r = self.client.post(url, { '%s-telechat_date' % form_id: d.isoformat(),
9696
'%s-clear_returning_item' % form_id: "1" })
9797

9898
self.assertEquals(r.status_code, 200)
9999

100100
# check that it moved below the right header in the DOM on the
101101
# agenda docs page
102-
d_header_pos = r.content.find("IESG telechat %s" % d.strftime("%Y-%m-%d"))
102+
d_header_pos = r.content.find("IESG telechat %s" % d.isoformat())
103103
draft_pos = r.content.find(draft.name)
104104
self.assertTrue(d_header_pos < draft_pos)
105105

@@ -153,55 +153,56 @@ def test_rollup_dates(self):
153153
self.assertTrue(dates.date4 == new_date)
154154
self.assertTrue(dates.date1 == old_date2)
155155

156-
class ManageTelechatDatesTestCaseREDESIGN(django.test.TestCase):
157-
fixtures = ['names']
156+
# class ManageTelechatDatesTestCaseREDESIGN(django.test.TestCase):
157+
# fixtures = ['names']
158158

159-
def test_set_dates(self):
160-
from ietf.utils.test_data import make_test_data
161-
make_test_data()
159+
# def test_set_dates(self):
160+
# from ietf.utils.test_data import make_test_data
161+
# make_test_data()
162162

163-
dates = TelechatDates.objects.all()[0]
164-
url = urlreverse('ietf.iesg.views.telechat_dates')
165-
login_testing_unauthorized(self, "secretary", url)
163+
# dates = TelechatDates.objects.all()[0]
164+
# url = urlreverse('ietf.iesg.views.telechat_dates')
165+
# login_testing_unauthorized(self, "secretary", url)
166166

167-
# normal get
168-
r = self.client.get(url)
169-
self.assertEquals(r.status_code, 200)
170-
q = PyQuery(r.content)
171-
self.assertEquals(len(q('form input[name=date1]')), 1)
167+
# # normal get
168+
# r = self.client.get(url)
169+
# self.assertEquals(r.status_code, 200)
170+
# q = PyQuery(r.content)
171+
# self.assertEquals(len(q('form input[name=date1]')), 1)
172172

173-
# post
174-
new_date = dates.date1 + timedelta(days=7)
173+
# # post
174+
# new_date = dates.date1 + timedelta(days=7)
175175

176-
r = self.client.post(url, dict(date1=new_date.isoformat(),
177-
date2=new_date.isoformat(),
178-
date3=new_date.isoformat(),
179-
date4=new_date.isoformat(),
180-
))
181-
self.assertEquals(r.status_code, 200)
176+
# r = self.client.post(url, dict(date1=new_date.isoformat(),
177+
# date2=new_date.isoformat(),
178+
# date3=new_date.isoformat(),
179+
# date4=new_date.isoformat(),
180+
# ))
181+
# self.assertEquals(r.status_code, 200)
182182

183-
dates = TelechatDates.objects.all()[0]
184-
self.assertTrue(dates.date1 == new_date)
183+
# dates = TelechatDates.objects.all()[0]
184+
# self.assertTrue(dates.date1 == new_date)
185185

186-
def test_rollup_dates(self):
187-
from ietf.utils.test_data import make_test_data
188-
make_test_data()
186+
# def test_rollup_dates(self):
187+
# from ietf.utils.test_data import make_test_data
188+
# make_test_data()
189189

190-
dates = TelechatDates.objects.all()[0]
191-
url = urlreverse('ietf.iesg.views.telechat_dates')
192-
login_testing_unauthorized(self, "secretary", url)
190+
# dates = TelechatDates.objects.all()[0]
191+
# url = urlreverse('ietf.iesg.views.telechat_dates')
192+
# login_testing_unauthorized(self, "secretary", url)
193193

194-
old_date2 = dates.date2
195-
new_date = dates.date4 + timedelta(days=14)
196-
r = self.client.post(url, dict(rollup_dates="1"))
197-
self.assertEquals(r.status_code, 200)
194+
# old_date2 = dates.date2
195+
# new_date = dates.date4 + timedelta(days=14)
196+
# r = self.client.post(url, dict(rollup_dates="1"))
197+
# self.assertEquals(r.status_code, 200)
198198

199-
dates = TelechatDates.objects.all()[0]
200-
self.assertTrue(dates.date4 == new_date)
201-
self.assertTrue(dates.date1 == old_date2)
199+
# dates = TelechatDates.objects.all()[0]
200+
# self.assertTrue(dates.date4 == new_date)
201+
# self.assertTrue(dates.date1 == old_date2)
202202

203203
if settings.USE_DB_REDESIGN_PROXY_CLASSES:
204-
ManageTelechatDatesTestCase = ManageTelechatDatesTestCaseREDESIGN
204+
#ManageTelechatDatesTestCase = ManageTelechatDatesTestCaseREDESIGN
205+
del ManageTelechatDatesTestCase
205206

206207
class WorkingGroupActionsTestCase(django.test.TestCase):
207208
fixtures = ['base', 'wgactions']
@@ -380,22 +381,22 @@ def test_edit_wgaction(self):
380381
self.assertEquals(len(q('form select[name=telechat_date]')), 1)
381382

382383
# change
383-
dates = TelechatDates.objects.all()[0]
384+
dates = TelechatDate.objects.active()
384385
token_name = Person.objects.get(name="Ad No1").name_parts()[1]
385386
old = wga.pk
386-
r = self.client.post(url, dict(status_date=dates.date1.isoformat(),
387+
r = self.client.post(url, dict(status_date=dates[0].date.isoformat(),
387388
token_name=token_name,
388389
category="23",
389390
note="Testing.",
390-
telechat_date=dates.date4.isoformat()))
391+
telechat_date=dates[3].date.isoformat()))
391392
self.assertEquals(r.status_code, 302)
392393

393394
wga = WGAction.objects.get(pk=old)
394-
self.assertEquals(wga.status_date, dates.date1)
395+
self.assertEquals(wga.status_date, dates[0].date)
395396
self.assertEquals(wga.token_name, token_name)
396397
self.assertEquals(wga.category, 23)
397398
self.assertEquals(wga.note, "Testing.")
398-
self.assertEquals(wga.telechat_date, dates.date4)
399+
self.assertEquals(wga.telechat_date, dates[3].date)
399400

400401
def test_add_possible_wg(self):
401402
from ietf.utils.test_data import make_test_data
@@ -431,14 +432,14 @@ def test_add_possible_wg(self):
431432
self.assertEquals(len(q('form select[name=telechat_date]')), 1)
432433

433434
wgas_before = WGAction.objects.all().count()
434-
dates = TelechatDates.objects.all()[0]
435+
dates = TelechatDate.objects.active()
435436
token_name = Person.objects.get(name="Ad No1").name_parts()[1]
436437
r = self.client.post(add_url,
437-
dict(status_date=dates.date1.isoformat(),
438+
dict(status_date=dates[0].date.isoformat(),
438439
token_name=token_name,
439440
category="23",
440441
note="Testing.",
441-
telechat_date=dates.date4.isoformat()))
442+
telechat_date=dates[3].date.isoformat()))
442443
self.assertEquals(r.status_code, 302)
443444
self.assertEquals(wgas_before + 1, WGAction.objects.all().count())
444445

ietf/iesg/views.py

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -536,13 +536,17 @@ def discusses(request):
536536
return direct_to_template(request, 'iesg/discusses.html', {'docs':res})
537537

538538

539-
class TelechatDatesForm(forms.ModelForm):
540-
class Meta:
541-
model = TelechatDates
542-
fields = ['date1', 'date2', 'date3', 'date4']
539+
if not settings.USE_DB_REDESIGN_PROXY_CLASSES:
540+
class TelechatDatesForm(forms.ModelForm):
541+
class Meta:
542+
model = TelechatDates
543+
fields = ['date1', 'date2', 'date3', 'date4']
543544

544545
@group_required('Secretariat')
545546
def telechat_dates(request):
547+
if settings.USE_DB_REDESIGN_PROXY_CLASSES:
548+
return HttpResponseRedirect("/admin/iesg/telechatdate/")
549+
546550
dates = TelechatDates.objects.all()[0]
547551

548552
if request.method == 'POST':

ietf/utils/test_data.py

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
from django.contrib.auth.models import User
22

3-
from ietf.iesg.models import TelechatDates, WGAction
3+
from ietf.iesg.models import TelechatDate, WGAction
44
from ietf.ipr.models import IprDetail, IprDocAlias
55
from ietf.meeting.models import Meeting
66
from redesign.doc.models import *
@@ -226,12 +226,11 @@ def make_test_data():
226226

227227
# telechat dates
228228
t = datetime.date.today()
229-
dates = TelechatDates(date1=t,
230-
date2=t + datetime.timedelta(days=7),
231-
date3=t + datetime.timedelta(days=14),
232-
date4=t + datetime.timedelta(days=21),
233-
)
234-
super(dates.__class__, dates).save(force_insert=True) # work-around hard-coded save block
229+
old = TelechatDate.objects.create(date=t - datetime.timedelta(days=14)).date
230+
date1 = TelechatDate.objects.create(date=t).date
231+
date2 = TelechatDate.objects.create(date=t + datetime.timedelta(days=14)).date
232+
date3 = TelechatDate.objects.create(date=t + datetime.timedelta(days=14 * 2)).date
233+
date4 = TelechatDate.objects.create(date=t + datetime.timedelta(days=14 * 3)).date
235234

236235
# WG Actions
237236
group = Group.objects.create(
@@ -248,7 +247,7 @@ def make_test_data():
248247
agenda=1,
249248
token_name="Aread",
250249
category=13,
251-
telechat_date=dates.date2
250+
telechat_date=date2
252251
)
253252

254253
# Meeting

0 commit comments

Comments
 (0)