Merge lp:~mhall119/summit/schedule-specific-rooms into lp:summit

Proposed by Michael Hall
Status: Merged
Approved by: James Westby
Approved revision: 199
Merged at revision: 198
Proposed branch: lp:~mhall119/summit/schedule-specific-rooms
Merge into: lp:summit
Diff against target: 85 lines (+43/-3)
3 files modified
summit/schedule/render.py (+4/-1)
summit/schedule/tests.py (+31/-1)
summit/schedule/views.py (+8/-1)
To merge this branch: bzr merge lp:~mhall119/summit/schedule-specific-rooms
Reviewer Review Type Date Requested Status
James Westby (community) Approve
Review via email: mp+79681@code.launchpad.net

Commit message

Allows a simple ?rooms= query string variable with a list of room name-slugs on the date view of the schedule.

Description of the change

Allows a simple ?rooms= query string variable with a list of room name-slugs on the date view of the schedule.

Private rooms can be included in this list, but they will only be shown if the user has access to view private rooms, otherwise they are ignored.

To post a comment you must log in.
199. By Michael Hall

Added test case

Revision history for this message
James Westby (james-w) :
review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'summit/schedule/render.py'
2--- summit/schedule/render.py 2011-09-30 21:43:02 +0000
3+++ summit/schedule/render.py 2011-10-18 13:54:23 +0000
4@@ -88,7 +88,10 @@
5 date = None
6 dates = summit.dates()
7
8- if room is not None:
9+ if isinstance(room, (list, tuple)):
10+ rooms = room
11+ room = None
12+ elif room is not None:
13 room = room
14 rooms = [room]
15 else:
16
17=== modified file 'summit/schedule/tests.py'
18--- summit/schedule/tests.py 2011-09-22 22:08:26 +0000
19+++ summit/schedule/tests.py 2011-10-18 13:54:23 +0000
20@@ -812,7 +812,7 @@
21 summit=self.summit)
22
23 self.track1 = factory.make_one(Track, summit=self.summit)
24- self.room1 = factory.make_one(Room, summit=self.summit)
25+ self.room1 = factory.make_one(Room, summit=self.summit, name='room1')
26 self.meeting1 = factory.make_one(Meeting, summit=self.summit, name='meeting1', private=False, requires_dial_in=False)
27 self.agenda1 = factory.make_one(Agenda, slot=self.slot, meeting=self.meeting1, room=self.room1)
28
29@@ -917,6 +917,36 @@
30 self.assertContains(response, 'test%user', 2)
31 self.assertContains(response, 'Test % User', 1)
32
33+ def test_specify_rooms_in_schedule(self):
34+ room2 = factory.make_one(Room, summit=self.summit, name='room2', title='Room 2')
35+ self.room1.title = 'Room 1'
36+ self.room1.save()
37+ self.agenda1.delete()
38+
39+ schedule_args = [self.summit.name, self.agenda1.slot.start_utc.date()]
40+ schedule_url = reverse('summit.schedule.views.by_date', args=schedule_args)
41+
42+ response = self.client.get(schedule_url)
43+ self.assertContains(response, self.room1.title, 2)
44+ self.assertContains(response, room2.title, 2)
45+
46+ response = self.client.get(schedule_url + '?rooms=room1')
47+ self.assertContains(response, self.room1.title, 2)
48+ self.assertContains(response, room2.title, 0)
49+
50+ response = self.client.get(schedule_url + '?rooms=room2')
51+ self.assertContains(response, self.room1.title, 0)
52+ self.assertContains(response, room2.title, 2)
53+
54+ response = self.client.get(schedule_url + '?rooms=room1,room2')
55+ self.assertContains(response, self.room1.title, 2)
56+ self.assertContains(response, room2.title, 2)
57+
58+ response = self.client.get(schedule_url + '?rooms=unknown1,unknown2')
59+ self.assertContains(response, self.room1.title, 0)
60+ self.assertContains(response, room2.title, 0)
61+
62+
63
64 class ScheduleCacheTestCase(djangotest.TestCase):
65
66
67=== modified file 'summit/schedule/views.py'
68--- summit/schedule/views.py 2011-09-21 12:08:21 +0000
69+++ summit/schedule/views.py 2011-10-18 13:54:23 +0000
70@@ -109,7 +109,14 @@
71 return _process_date_view(request, summit, attendee, today.strftime("%Y-%m-%d"))
72
73 def _process_date_view(request, summit, attendee, date):
74- schedule = schedule_factory(request, summit, attendee, date=date)
75+ if 'rooms' in request.GET:
76+ roomnames = request.GET.get('rooms', '').split(',')
77+ rooms = list(summit.room_set.filter(name__in=roomnames, type='open'))
78+ if request.user.is_authenticated() and request.user.is_staff:
79+ rooms += list(summit.room_set.filter(name__in=roomnames, type='private'))
80+ else:
81+ rooms = None
82+ schedule = schedule_factory(request, summit, attendee, room=rooms, date=date)
83
84 if request.method == 'POST':
85 return schedule.save_change()

Subscribers

People subscribed via source and target branches