Skip to content

Commit e55a079

Browse files
committed
Merged in [15787] from rcross@amsl.com:
Rework page flow and forms of secr/meetings app. Fixes ietf-tools#2609. - Legacy-Id: 15794 Note: SVN reference [15787] has been migrated to Git commit e634dc2
2 parents 7e13f2d + 4322bda commit e55a079

17 files changed

Lines changed: 130 additions & 542 deletions

ietf/secr/meetings/forms.py

Lines changed: 0 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import datetime
21
import re
32

43
from django import forms
@@ -130,44 +129,6 @@ class Meta:
130129
model = Room
131130
exclude = ['resources']
132131

133-
class NewSessionForm(forms.Form):
134-
day = forms.ChoiceField(choices=SESSION_DAYS)
135-
time = TimeChoiceField()
136-
room = forms.ModelChoiceField(queryset=Room.objects.none())
137-
session = forms.CharField(widget=forms.HiddenInput)
138-
note = forms.CharField(max_length=255, required=False, label='Special Note from Scheduler')
139-
combine = forms.BooleanField(required=False, label='Combine with next session')
140-
141-
# setup the timeslot options based on meeting passed in
142-
def __init__(self,*args,**kwargs):
143-
self.meeting = kwargs.pop('meeting')
144-
super(NewSessionForm, self).__init__(*args,**kwargs)
145-
146-
# attach session object to the form so we can use it in the template
147-
self.session_object = Session.objects.get(id=self.initial['session'])
148-
self.fields['room'].queryset = Room.objects.filter(meeting=self.meeting)
149-
self.fields['time'].choices = get_times(self.meeting,self.initial['day'])
150-
151-
def clean(self):
152-
super(NewSessionForm, self).clean()
153-
if any(self.errors):
154-
return
155-
cleaned_data = self.cleaned_data
156-
time = cleaned_data['time']
157-
day = cleaned_data['day']
158-
room = cleaned_data['room']
159-
if cleaned_data['combine']:
160-
# calculate datetime object from inputs, get current slot, feed to get_next_slot()
161-
day_obj = self.meeting.get_meeting_date(int(day)-1)
162-
hour = datetime.time(int(time[:2]),int(time[2:]))
163-
time_obj = datetime.datetime.combine(day_obj,hour)
164-
slot = TimeSlot.objects.get(meeting=self.meeting,time=time_obj,location=room)
165-
next_slot = get_next_slot(slot)
166-
if not next_slot:
167-
raise forms.ValidationError('There is no next session to combine')
168-
169-
return cleaned_data
170-
171132
class TimeSlotForm(forms.Form):
172133
day = forms.ChoiceField(choices=DAYS_CHOICES)
173134
time = forms.TimeField()

ietf/secr/meetings/tests.py

Lines changed: 6 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -102,12 +102,9 @@ def test_add_meeting(self):
102102

103103
def test_edit_meeting(self):
104104
"Edit Meeting"
105-
Meeting.objects.create(number=1,
106-
type_id='ietf',
107-
date=datetime.datetime(2014,7,20),
108-
)
109-
url = reverse('ietf.secr.meetings.views.edit_meeting',kwargs={'meeting_id':1})
110-
post_data = dict(number='1',date='2014-07-20',city='Toronto',
105+
meeting = make_meeting_test_data()
106+
url = reverse('ietf.secr.meetings.views.edit_meeting',kwargs={'meeting_id':meeting.number})
107+
post_data = dict(number=meeting.number,date='2014-07-20',city='Toronto',
111108
days=7,
112109
idsubmit_cutoff_day_offset_00=13,
113110
idsubmit_cutoff_day_offset_01=20,
@@ -119,9 +116,9 @@ def test_edit_meeting(self):
119116
attendees=1234,
120117
)
121118
self.client.login(username="secretary", password="secretary+password")
122-
response = self.client.post(url, post_data,follow=True)
119+
response = self.client.post(url, post_data, follow=True)
123120
self.assertEqual(response.status_code, 200)
124-
meeting = Meeting.objects.get(number=1)
121+
meeting = Meeting.objects.get(number=meeting.number)
125122
self.assertEqual(meeting.city,'Toronto')
126123
self.assertEqual(meeting.attendees,1234)
127124

@@ -187,13 +184,6 @@ def test_notifications(self):
187184
self.assertEqual(response.status_code, 302)
188185
self.assertEqual(len(outbox), mailbox_before + 1)
189186

190-
def test_meetings_select(self):
191-
make_meeting_test_data()
192-
url = reverse('ietf.secr.meetings.views.select',kwargs={'meeting_id':42,'schedule_name':'test-agenda'})
193-
self.client.login(username="secretary", password="secretary+password")
194-
response = self.client.get(url)
195-
self.assertEqual(response.status_code, 200)
196-
197187
def test_meetings_rooms(self):
198188
meeting = make_meeting_test_data()
199189
url = reverse('ietf.secr.meetings.views.rooms',kwargs={'meeting_id':42,'schedule_name':'test-agenda'})
@@ -370,42 +360,18 @@ def test_meetings_non_session_cancel(self):
370360
session = slot.sessionassignments.filter(schedule=meeting.agenda).first().session
371361
self.assertEqual(session.status_id, 'canceled')
372362

373-
def test_meetings_select_group(self):
374-
make_meeting_test_data()
375-
url = reverse('ietf.secr.meetings.views.select_group',kwargs={'meeting_id':42,'schedule_name':'test-agenda'})
376-
self.client.login(username="secretary", password="secretary+password")
377-
response = self.client.get(url)
378-
self.assertEqual(response.status_code, 200)
379-
q = PyQuery(response.content)
380-
self.assertEqual(len(q("#id_scheduled_sessions")),1)
381-
382-
def test_meetings_schedule(self):
383-
meeting = make_meeting_test_data()
384-
url = reverse('ietf.secr.meetings.views.schedule',kwargs={
385-
'meeting_id':meeting.number,
386-
'schedule_name':meeting.agenda.name,
387-
'acronym':'mars'
388-
})
389-
self.client.login(username="secretary", password="secretary+password")
390-
response = self.client.get(url)
391-
self.assertEqual(response.status_code, 200)
392-
393363
def test_meetings_session_edit(self):
394364
meeting = make_meeting_test_data()
395365
session = Session.objects.filter(meeting=meeting,group__acronym='mars').first()
396366
url = reverse('ietf.secr.meetings.views.session_edit', kwargs={'meeting_id':meeting.number,'schedule_name':meeting.agenda.name,'session_id':session.id})
397-
redirect_url = reverse('ietf.secr.meetings.views.select_group', kwargs={'meeting_id':meeting.number,'schedule_name':meeting.agenda.name})
367+
redirect_url = reverse('ietf.secr.meetings.views.sessions', kwargs={'meeting_id':meeting.number,'schedule_name':meeting.agenda.name})
398368
self.client.login(username="secretary", password="secretary+password")
399369
response = self.client.get(url)
400370
self.assertEqual(response.status_code, 200)
401371
response = self.client.post(url, {'agenda_note':'TEST'})
402372
self.assertRedirects(response, redirect_url)
403373
session = Session.objects.get(id=session.id)
404374
self.assertEqual(session.agenda_note, 'TEST')
405-
response = self.client.post(url, {'agenda_note':'TEST','submit':'Cancel'})
406-
self.assertRedirects(response, redirect_url)
407-
session = Session.objects.get(id=session.id)
408-
self.assertEqual(session.status.slug, 'canceled')
409375

410376
# ----------------------
411377
# Unit Tests

ietf/secr/meetings/urls.py

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,18 +12,15 @@
1212
url(r'^(?P<meeting_id>\d{1,6})/blue_sheet/generate/$', views.blue_sheet_generate),
1313
url(r'^(?P<meeting_id>\d{1,6})/edit/$', views.edit_meeting),
1414
url(r'^(?P<meeting_id>\d{1,6})/notifications/$', views.notifications),
15-
url(r'^(?P<meeting_id>\d{1,6})/(?P<schedule_name>[A-Za-z0-9_\-]+)/$', views.select),
15+
url(r'^(?P<meeting_id>\d{1,6})/(?P<schedule_name>[A-Za-z0-9_\-]+)/$', views.rooms),
1616
url(r'^(?P<meeting_id>\d{1,6})/(?P<schedule_name>[A-Za-z0-9_\-]+)/non_session/$', views.non_session),
1717
url(r'^(?P<meeting_id>\d{1,6})/(?P<schedule_name>[A-Za-z0-9_\-]+)/non_session/cancel/(?P<slot_id>\d{1,6})/$', views.non_session_cancel),
1818
url(r'^(?P<meeting_id>\d{1,6})/(?P<schedule_name>[A-Za-z0-9_\-]+)/non_session/edit/(?P<slot_id>\d{1,6})/$', views.non_session_edit),
1919
url(r'^(?P<meeting_id>\d{1,6})/(?P<schedule_name>[A-Za-z0-9_\-]+)/non_session/delete/(?P<slot_id>\d{1,6})/$', views.non_session_delete),
2020
url(r'^(?P<meeting_id>\d{1,6})/(?P<schedule_name>[A-Za-z0-9_\-]+)/rooms/$', views.rooms),
21-
url(r'^(?P<meeting_id>\d{1,6})/(?P<schedule_name>[A-Za-z0-9_\-]+)/select/$', views.select_group),
2221
url(r'^(?P<meeting_id>\d{1,6})/(?P<schedule_name>[A-Za-z0-9_\-]+)/times/$', views.times),
22+
url(r'^(?P<meeting_id>\d{1,6})/(?P<schedule_name>[A-Za-z0-9_\-]+)/sessions/$', views.sessions),
2323
url(r'^(?P<meeting_id>\d{1,6})/(?P<schedule_name>[A-Za-z0-9_\-]+)/times/delete/(?P<time>[0-9\:]+)/$', views.times_delete),
2424
url(r'^(?P<meeting_id>\d{1,6})/(?P<schedule_name>[A-Za-z0-9_\-]+)/times/edit/(?P<time>[0-9\:]+)/$', views.times_edit),
25-
# url(r'^(?P<meeting_id>\d{1,6})/(?P<schedule_name>[A-Za-z0-9_\-]+)/unschedule/(?P<session_id>\d{1,6})/$', views.unschedule), # Not in use
26-
url(r'^(?P<meeting_id>\d{1,6})/(?P<schedule_name>[A-Za-z0-9_\-]+)/(?P<acronym>[-a-z0-9]+)/schedule/$', views.schedule),
2725
url(r'^(?P<meeting_id>\d{1,6})/(?P<schedule_name>[A-Za-z0-9_\-]+)/(?P<session_id>\d{1,6})/edit/$', views.session_edit),
28-
url(r'^(?P<meeting_id>\d{1,6})/(?P<acronym>[-a-z0-9]+)/remove/$', views.remove_session),
2926
]

0 commit comments

Comments
 (0)