Skip to content

Commit 47901e8

Browse files
committed
Checkpoint: by-room view and basic leadership meetings support
- Legacy-Id: 8930
1 parent 8686fd2 commit 47901e8

6 files changed

Lines changed: 43 additions & 2 deletions

File tree

ietf/meeting/helpers.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,8 @@ def build_all_agenda_slices(meeting):
6767
date_slices = {}
6868

6969
for ts in meeting.timeslot_set.exclude(type__in=['reg','break']).order_by('time','name'):
70+
#for ts in meeting.timeslot_set.exclude(type__in=['reg','break','other']).order_by('time','name'):
71+
#for ts in meeting.timeslot_set.order_by('time','name'):
7072
ymd = ts.time.date()
7173

7274
if ymd not in date_slices and ts.location != None:

ietf/meeting/models.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -322,14 +322,18 @@ def __unicode__(self):
322322
return u"%s: %s-%s %s, %s" % (self.meeting.number, self.time.strftime("%m-%d %H:%M"), (self.time + self.duration).strftime("%H:%M"), self.name, location)
323323
def end_time(self):
324324
return self.time + self.duration
325-
def get_location(self):
325+
def get_hidden_location(self):
326326
location = self.location
327327
if location:
328328
location = location.name
329329
elif self.type_id == "reg":
330330
location = self.meeting.reg_area
331331
elif self.type_id == "break":
332332
location = self.meeting.break_area
333+
return location
334+
335+
def get_location(self):
336+
location = self.get_hidden_location()
333337
if not self.show_location:
334338
location = ""
335339
return location

ietf/meeting/test_data.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ def make_meeting_test_data():
2020
pname = RoomResourceName.objects.create(name='projector',slug='proj')
2121
projector = ResourceAssociation.objects.create(name=pname,icon="notfound.png",desc="Basic projector")
2222
room = Room.objects.create(meeting=meeting, name="Test Room", capacity=123)
23+
breakfast_room = Room.objects.create(meeting=meeting, name="Breakfast Room", capacity=40)
2324
room.resources = [projector]
2425

2526
# mars WG
@@ -41,6 +42,17 @@ def make_meeting_test_data():
4142
scheduled=datetime.datetime.now())
4243
ScheduledSession.objects.create(timeslot=slot, session=ames_session, schedule=schedule)
4344

45+
# IESG breakfast
46+
breakfast_slot = TimeSlot.objects.create(meeting=meeting, type_id="lead", duration=90 * 60,
47+
location=breakfast_room,
48+
time=datetime.datetime.combine(datetime.date.today(),datetime.time(7,0)))
49+
iesg_session = Session.objects.create(meeting=meeting, group=Group.objects.get(acronym="iesg"),
50+
name="IESG Breakfast",
51+
attendees=25, requested_by=system_person,
52+
requested_duration=20, status_id="schedw",
53+
scheduled=datetime.datetime.now())
54+
ScheduledSession.objects.create(timeslot=breakfast_slot, session=iesg_session, schedule=schedule)
55+
4456
meeting.agenda = schedule
4557
meeting.save()
4658

ietf/meeting/tests_views.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
from ietf.doc.models import Document
1212
from ietf.meeting.models import Session, TimeSlot
1313
from ietf.meeting.test_data import make_meeting_test_data
14-
from ietf.utils.test_utils import TestCase
14+
from ietf.utils.test_utils import TestCase, login_testing_unauthorized
1515

1616
class MeetingTests(TestCase):
1717
def setUp(self):
@@ -98,6 +98,13 @@ def test_agenda(self):
9898
self.assertTrue(session.group.acronym in agenda_content)
9999
self.assertTrue(slot.location.name in agenda_content)
100100

101+
def test_agenda_by_room(self):
102+
meeting = make_meeting_test_data()
103+
url = urlreverse("ietf.meeting.views.agenda_by_room",kwargs=dict(num=meeting.number))
104+
login_testing_unauthorized(self,"secretary",url)
105+
r = self.client.get(url,kwargs=dict(num=meeting.number))
106+
self.assertTrue(all([x in r.content for x in ['mars','IESG Breakfast','Test Room','Breakfast Room']]))
107+
101108
def test_materials(self):
102109
meeting = make_meeting_test_data()
103110
session = Session.objects.filter(meeting=meeting, group__acronym="mars").first()

ietf/meeting/urls.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
(r'^(?P<num>\d+)/agenda(?P<ext>.txt)$', views.agenda),
3636
(r'^(?P<num>\d+)/agenda.ics$', views.ical_agenda),
3737
(r'^(?P<num>\d+)/agenda(?P<ext>.csv)$', views.agenda),
38+
(r'^(?P<num>\d+)/agenda/by-room$', views.agenda_by_room),
3839
(r'^(?P<num>\d+)/agendas/edit$', views.edit_agendas),
3940
(r'^(?P<num>\d+)/timeslots/edit$', views.edit_timeslots),
4041
(r'^(?P<num>\d+)/rooms$', ajax.timeslot_roomsurl),

ietf/meeting/views.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import tarfile
77
import urllib
88
from tempfile import mkstemp
9+
from collections import OrderedDict
910

1011
import debug # pyflakes:ignore
1112

@@ -376,6 +377,20 @@ def agenda(request, num=None, name=None, base=None, ext=None):
376377
return HttpResponse(render_to_string("meeting/"+base+ext,
377378
{"schedule":schedule, "updated": updated}, RequestContext(request)), content_type=mimetype[ext])
378379

380+
#TODO - let the IAB in
381+
@role_required('Area Director','Secretariat')
382+
@ensure_csrf_cookie
383+
def agenda_by_room(request,num=None):
384+
meeting = get_meeting(num)
385+
schedule = get_schedule(meeting)
386+
ss_by_day = OrderedDict()
387+
for day in schedule.scheduledsession_set.dates('timeslot__time','day'):
388+
ss_by_day[day]=[]
389+
for ss in schedule.scheduledsession_set.order_by('timeslot__location','timeslot__time'):
390+
day = ss.timeslot.time.date()
391+
ss_by_day[day].append(ss)
392+
return render(request,"meeting/agenda_by_room.html",{"meeting":meeting,"ss_by_day":ss_by_day})
393+
379394
def read_agenda_file(num, doc):
380395
# XXXX FIXME: the path fragment in the code below should be moved to
381396
# settings.py. The *_PATH settings should be generalized to format()

0 commit comments

Comments
 (0)