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
=== modified file 'summit/schedule/render.py'
--- summit/schedule/render.py 2011-09-30 21:43:02 +0000
+++ summit/schedule/render.py 2011-10-18 13:54:23 +0000
@@ -88,7 +88,10 @@
88 date = None88 date = None
89 dates = summit.dates()89 dates = summit.dates()
9090
91 if room is not None:91 if isinstance(room, (list, tuple)):
92 rooms = room
93 room = None
94 elif room is not None:
92 room = room95 room = room
93 rooms = [room]96 rooms = [room]
94 else:97 else:
9598
=== modified file 'summit/schedule/tests.py'
--- summit/schedule/tests.py 2011-09-22 22:08:26 +0000
+++ summit/schedule/tests.py 2011-10-18 13:54:23 +0000
@@ -812,7 +812,7 @@
812 summit=self.summit)812 summit=self.summit)
813813
814 self.track1 = factory.make_one(Track, summit=self.summit)814 self.track1 = factory.make_one(Track, summit=self.summit)
815 self.room1 = factory.make_one(Room, summit=self.summit)815 self.room1 = factory.make_one(Room, summit=self.summit, name='room1')
816 self.meeting1 = factory.make_one(Meeting, summit=self.summit, name='meeting1', private=False, requires_dial_in=False)816 self.meeting1 = factory.make_one(Meeting, summit=self.summit, name='meeting1', private=False, requires_dial_in=False)
817 self.agenda1 = factory.make_one(Agenda, slot=self.slot, meeting=self.meeting1, room=self.room1)817 self.agenda1 = factory.make_one(Agenda, slot=self.slot, meeting=self.meeting1, room=self.room1)
818818
@@ -917,6 +917,36 @@
917 self.assertContains(response, 'test%user', 2)917 self.assertContains(response, 'test%user', 2)
918 self.assertContains(response, 'Test % User', 1)918 self.assertContains(response, 'Test % User', 1)
919919
920 def test_specify_rooms_in_schedule(self):
921 room2 = factory.make_one(Room, summit=self.summit, name='room2', title='Room 2')
922 self.room1.title = 'Room 1'
923 self.room1.save()
924 self.agenda1.delete()
925
926 schedule_args = [self.summit.name, self.agenda1.slot.start_utc.date()]
927 schedule_url = reverse('summit.schedule.views.by_date', args=schedule_args)
928
929 response = self.client.get(schedule_url)
930 self.assertContains(response, self.room1.title, 2)
931 self.assertContains(response, room2.title, 2)
932
933 response = self.client.get(schedule_url + '?rooms=room1')
934 self.assertContains(response, self.room1.title, 2)
935 self.assertContains(response, room2.title, 0)
936
937 response = self.client.get(schedule_url + '?rooms=room2')
938 self.assertContains(response, self.room1.title, 0)
939 self.assertContains(response, room2.title, 2)
940
941 response = self.client.get(schedule_url + '?rooms=room1,room2')
942 self.assertContains(response, self.room1.title, 2)
943 self.assertContains(response, room2.title, 2)
944
945 response = self.client.get(schedule_url + '?rooms=unknown1,unknown2')
946 self.assertContains(response, self.room1.title, 0)
947 self.assertContains(response, room2.title, 0)
948
949
920950
921class ScheduleCacheTestCase(djangotest.TestCase):951class ScheduleCacheTestCase(djangotest.TestCase):
922952
923953
=== modified file 'summit/schedule/views.py'
--- summit/schedule/views.py 2011-09-21 12:08:21 +0000
+++ summit/schedule/views.py 2011-10-18 13:54:23 +0000
@@ -109,7 +109,14 @@
109 return _process_date_view(request, summit, attendee, today.strftime("%Y-%m-%d"))109 return _process_date_view(request, summit, attendee, today.strftime("%Y-%m-%d"))
110110
111def _process_date_view(request, summit, attendee, date):111def _process_date_view(request, summit, attendee, date):
112 schedule = schedule_factory(request, summit, attendee, date=date)112 if 'rooms' in request.GET:
113 roomnames = request.GET.get('rooms', '').split(',')
114 rooms = list(summit.room_set.filter(name__in=roomnames, type='open'))
115 if request.user.is_authenticated() and request.user.is_staff:
116 rooms += list(summit.room_set.filter(name__in=roomnames, type='private'))
117 else:
118 rooms = None
119 schedule = schedule_factory(request, summit, attendee, room=rooms, date=date)
113120
114 if request.method == 'POST':121 if request.method == 'POST':
115 return schedule.save_change()122 return schedule.save_change()

Subscribers

People subscribed via source and target branches