~statik/summit/gimmetests

« back to all changes in this revision

Viewing changes to summit/schedule/render.py

  • Committer: Dave Walker (Daviey)
  • Author(s): Guilherme Salgado
  • Date: 2010-10-22 21:21:42 UTC
  • mfrom: (56.2.2 summit)
  • Revision ID: davewalker@ubuntu.com-20101022212142-prn48fphwr0b187m
Fix the linaro-only view to drop the rooms that are not used by any linaro meetings
Change the linaro blueprint icon

Show diffs side-by-side

added added

removed removed

Lines of Context:
118
118
            _now = datetime.datetime.utcnow()
119
119
            if self.fakenow is not None:
120
120
                _now = self.fakenow
121
 
            _local_now = self.summit.localize(_now)
 
121
                _local_now = self.summit.localize(_now)
122
122
            try:
123
123
                _slots = self.summit.slot_set.filter(
124
124
                    start_utc__lte=_now, end_utc__gte=_now)[0]
139
139
                    if _guess.start.date() != _local_now.date():
140
140
                        self.endofday = True
141
141
                        return
142
 
                    else:
 
142
                    else:
143
143
                        _slots = [_guess]
144
144
                except IndexError:
145
145
                    _slots = []
264
264
            html += '<p><strong>No more sessions for today.</strong></p>'
265
265
            return mark_safe(html)
266
266
 
267
 
        headings = u''
268
 
        meetings = u''
 
267
        headings = u''
 
268
        meetings = u''
269
269
 
270
270
        for date_num, date in enumerate(self.dates):
271
271
            for slot_num, slot in enumerate(self.slots[date]):
272
272
                for room_num, info in enumerate(self.meetings[slot]):
273
273
                    (room, meeting) = info
274
 
                    if room is None: 
275
 
                        continue
 
274
                    if room is None: 
 
275
                        continue
276
276
                    if meeting is None:
277
277
                        meeting_title = ''
278
278
                    else:
279
279
                        meeting_title = meeting.title
280
280
                    try:
281
 
                        track = meeting.tracks.all()[0].title.lower()
 
281
                        track = meeting.tracks.all()[0].title.lower()
282
282
                    except (IndexError, AttributeError):
283
283
                        track = "unknown"
284
 
                    headings += '<th>%s</th>\n' % escape(room.name)
 
284
                    headings += '<th>%s</th>\n' % escape(room.name)
285
285
                    meetings += '<td class="%s">%s</td>\n' % (track, escape(meeting_title))
286
286
 
287
 
        html += '<table>\n'
288
 
 
289
 
        html += '<tr>\n'
290
 
        html += headings
291
 
        html += '</tr>\n'
292
 
 
293
 
        html += '<tr>\n'
294
 
        html += meetings
295
 
        html += '</tr>\n'
296
 
 
297
 
        html += '</table>\n'
 
287
        html += '<table>\n'
 
288
 
 
289
        html += '<tr>\n'
 
290
        html += headings
 
291
        html += '</tr>\n'
 
292
 
 
293
        html += '<tr>\n'
 
294
        html += meetings
 
295
        html += '</tr>\n'
 
296
 
 
297
        html += '</table>\n'
298
298
 
299
299
        return mark_safe(html)
300
300
 
1011
1011
    
1012
1012
class LinaroSchedule(Schedule):
1013
1013
 
1014
 
    def meeting_div(self, meeting, room=None, slot=None, pos=None):
1015
 
        if meeting.is_linaro or meeting.type in ('talk', 'plenary'):
1016
 
            return super(LinaroSchedule, self).meeting_div(
1017
 
                meeting, room=room, slot=slot, pos=pos)
1018
 
        else:
1019
 
            return u''
 
1014
    def calculate(self):
 
1015
        super(LinaroSchedule, self).calculate()
 
1016
 
 
1017
        # Find all the meetings that are linaro-related and all the rooms that
 
1018
        # are used by at least one linaro-related meeting.
 
1019
        used_rooms = set()
 
1020
        linaro_meetings = []
 
1021
        for slot, meetings in self.meetings.items():
 
1022
            for room, meeting in meetings:
 
1023
                if meeting is None:
 
1024
                    continue
 
1025
                if meeting.is_linaro or meeting.type in ('talk', 'plenary'):
 
1026
                    used_rooms.add(room)
 
1027
                    linaro_meetings.append(meeting)
 
1028
 
 
1029
        # Now remove all unused rooms from self.rooms.
 
1030
        unused_rooms = set(self.rooms) - used_rooms
 
1031
        for room in unused_rooms:
 
1032
            self.rooms.remove(room)
 
1033
 
 
1034
        # Finally, remove the (room, meeting) tuples from self.meetings
 
1035
        # for all rooms that are unused.  Also drop all non-linaro meetings
 
1036
        # from self.meetings.
 
1037
        for slot, meetings in self.meetings.items():
 
1038
            if slot.type == 'lunch':
 
1039
                continue
 
1040
            tmp_meetings = meetings[:]
 
1041
            for room, meeting in tmp_meetings:
 
1042
                if room in unused_rooms:
 
1043
                    meetings.remove((room, meeting))
 
1044
                elif meeting not in linaro_meetings:
 
1045
                    idx = meetings.index((room, meeting))
 
1046
                    meetings[idx] = (room, None)