Merge lp:~salgado/summit/drop-unused-rooms into lp:summit

Proposed by Guilherme Salgado
Status: Merged
Merged at revision: 58
Proposed branch: lp:~salgado/summit/drop-unused-rooms
Merge into: lp:summit
Diff against target: 121 lines (+52/-25)
1 file modified
summit/schedule/render.py (+52/-25)
To merge this branch: bzr merge lp:~salgado/summit/drop-unused-rooms
Reviewer Review Type Date Requested Status
Dave Walker (community) Approve
Review via email: mp+39178@code.launchpad.net

Description of the change

This branch drops unused rooms on the linaro-only view and changes the icon used for linaro sessions.

To post a comment you must log in.
Revision history for this message
Dave Walker (davewalker) wrote :

lgtm

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'summit/media/img/blueprint-linaro.png'
2Binary files summit/media/img/blueprint-linaro.png 2010-09-22 14:38:26 +0000 and summit/media/img/blueprint-linaro.png 2010-10-22 20:18:47 +0000 differ
3=== modified file 'summit/schedule/render.py'
4--- summit/schedule/render.py 2010-10-21 11:14:25 +0000
5+++ summit/schedule/render.py 2010-10-22 20:18:47 +0000
6@@ -119,7 +119,7 @@
7 _now = datetime.datetime.utcnow()
8 if self.fakenow is not None:
9 _now = self.fakenow
10- _local_now = self.summit.localize(_now)
11+ _local_now = self.summit.localize(_now)
12 try:
13 _slots = self.summit.slot_set.filter(
14 start_utc__lte=_now, end_utc__gte=_now)[0]
15@@ -140,7 +140,7 @@
16 if _guess.start.date() != _local_now.date():
17 self.endofday = True
18 return
19- else:
20+ else:
21 _slots = [_guess]
22 except IndexError:
23 _slots = []
24@@ -265,37 +265,37 @@
25 html += '<p><strong>No more sessions for today.</strong></p>'
26 return mark_safe(html)
27
28- headings = u''
29- meetings = u''
30+ headings = u''
31+ meetings = u''
32
33 for date_num, date in enumerate(self.dates):
34 for slot_num, slot in enumerate(self.slots[date]):
35 for room_num, info in enumerate(self.meetings[slot]):
36 (room, meeting) = info
37- if room is None:
38- continue
39+ if room is None:
40+ continue
41 if meeting is None:
42 meeting_title = ''
43 else:
44 meeting_title = meeting.title
45 try:
46- track = meeting.tracks.all()[0].title.lower()
47+ track = meeting.tracks.all()[0].title.lower()
48 except (IndexError, AttributeError):
49 track = "unknown"
50- headings += '<th>%s</th>\n' % escape(room.name)
51+ headings += '<th>%s</th>\n' % escape(room.name)
52 meetings += '<td class="%s">%s</td>\n' % (track, escape(meeting_title))
53
54- html += '<table>\n'
55-
56- html += '<tr>\n'
57- html += headings
58- html += '</tr>\n'
59-
60- html += '<tr>\n'
61- html += meetings
62- html += '</tr>\n'
63-
64- html += '</table>\n'
65+ html += '<table>\n'
66+
67+ html += '<tr>\n'
68+ html += headings
69+ html += '</tr>\n'
70+
71+ html += '<tr>\n'
72+ html += meetings
73+ html += '</tr>\n'
74+
75+ html += '</table>\n'
76
77 return mark_safe(html)
78
79@@ -1012,9 +1012,36 @@
80
81 class LinaroSchedule(Schedule):
82
83- def meeting_div(self, meeting, room=None, slot=None, pos=None):
84- if meeting.is_linaro or meeting.type in ('talk', 'plenary'):
85- return super(LinaroSchedule, self).meeting_div(
86- meeting, room=room, slot=slot, pos=pos)
87- else:
88- return u''
89+ def calculate(self):
90+ super(LinaroSchedule, self).calculate()
91+
92+ # Find all the meetings that are linaro-related and all the rooms that
93+ # are used by at least one linaro-related meeting.
94+ used_rooms = set()
95+ linaro_meetings = []
96+ for slot, meetings in self.meetings.items():
97+ for room, meeting in meetings:
98+ if meeting is None:
99+ continue
100+ if meeting.is_linaro or meeting.type in ('talk', 'plenary'):
101+ used_rooms.add(room)
102+ linaro_meetings.append(meeting)
103+
104+ # Now remove all unused rooms from self.rooms.
105+ unused_rooms = set(self.rooms) - used_rooms
106+ for room in unused_rooms:
107+ self.rooms.remove(room)
108+
109+ # Finally, remove the (room, meeting) tuples from self.meetings
110+ # for all rooms that are unused. Also drop all non-linaro meetings
111+ # from self.meetings.
112+ for slot, meetings in self.meetings.items():
113+ if slot.type == 'lunch':
114+ continue
115+ tmp_meetings = meetings[:]
116+ for room, meeting in tmp_meetings:
117+ if room in unused_rooms:
118+ meetings.remove((room, meeting))
119+ elif meeting not in linaro_meetings:
120+ idx = meetings.index((room, meeting))
121+ meetings[idx] = (room, None)

Subscribers

People subscribed via source and target branches