diff --git a/addons/website_event_track/controllers/event.py b/addons/website_event_track/controllers/event.py index 60d4bbd390d..373ade03ad9 100644 --- a/addons/website_event_track/controllers/event.py +++ b/addons/website_event_track/controllers/event.py @@ -18,19 +18,17 @@ # along with this program. If not, see . # ############################################################################## +import collections + +import datetime +import re + +import pytz +import werkzeug.utils import openerp from openerp.addons.web import http from openerp.addons.web.http import request -from openerp.addons.website.controllers.main import Website as controllers -import datetime - -import re -import werkzeug.utils - -controllers = controllers() -import pytz -from pytz import timezone class website_event(http.Controller): @http.route(['/event//track/'], type='http', auth="public", website=True, multilang=True) @@ -79,24 +77,21 @@ class website_event(http.Controller): # TODO: not implemented @http.route(['/event//agenda'], type='http', auth="public", website=True, multilang=True) def event_agenda(self, event, tag=None, **post): - comp = lambda x: (x.date, bool(x.location_id)) - event.track_ids.sort(lambda x,y: cmp(comp(x), comp(y))) + days_tracks = collections.defaultdict(lambda: []) + for track in sorted(event.track_ids, key=lambda x: (x.date, bool(x.location_id))): + if not track.date: continue + days_tracks[track.date[:10]].append(track) days = {} - days_nbr = {} - for track in event.track_ids: - if not track.date: continue - days.setdefault(track.date[:10], []) - days[track.date[:10]].append(track) - - for d in days: - days_nbr[d] = len(days[d]) - days[d] = self._prepare_calendar(event, days[d]) + days_tracks_count = {} + for day, tracks in days_tracks.iteritems(): + days_tracks_count[day] = len(tracks) + days[day] = self._prepare_calendar(event, tracks) return request.website.render("website_event_track.agenda", { 'event': event, 'days': days, - 'days_nbr': days_nbr, + 'days_nbr': days_tracks_count, 'tag': tag })