From 3868cf9dbc6034e4f7ab684b0f2fc2891715a985 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20P=C3=A9ters?= Date: Tue, 6 Dec 2011 22:02:05 +0100 Subject: [PATCH] reuse flattening of events line in homepage (#1111) --- tabellio/webviews/misc.py | 48 ++++++++++++++++++++++----------------- 1 file changed, 27 insertions(+), 21 deletions(-) diff --git a/tabellio/webviews/misc.py b/tabellio/webviews/misc.py index 442c062..d8e8aa8 100644 --- a/tabellio/webviews/misc.py +++ b/tabellio/webviews/misc.py @@ -6,6 +6,8 @@ from zope import component from Products.CMFCore.utils import getToolByName +from tabellio.agenda.utils import MonthlyView + class IFolderWithBottomNavView(Interface): @@ -88,16 +90,19 @@ class PcfHomeFolder(BrowserView): # do not go more than 100 days in the future end = context.start + datetime.timedelta(100) start = context.start - r = catalog( - portal_type=['tabellio.agenda.parlevent', - 'tabellio.agenda.comevent', - 'tabellio.agenda.event'], - start={'query': start, 'range': 'min'}, - end={'query': end, 'range': 'max'}, - sort_on='start') - if len(r) < 2: # r[0] will be the current event - return '' - return r[1].getURL() + monthly_view = MonthlyView(self.context, init_calendar=True) + serie_of_events = monthly_view.get_events_from_catalog( + start, end, portal_type=['tabellio.agenda.parlevent', + 'tabellio.agenda.comevent', + 'tabellio.agenda.event']) + for i, event in enumerate(serie_of_events): + event_id = ((type(event.getId) is str) and event.getId or event.getId()) + if event_id == context.id: + try: + return serie_of_events[i+1].getURL() + except IndexError: + return None + return None def previous_event_url(self): context = self.get_event() @@ -105,17 +110,18 @@ class PcfHomeFolder(BrowserView): end = context.start # do not go back more than 100 days in the past start = context.start - datetime.timedelta(100) - r = catalog( - portal_type=['tabellio.agenda.parlevent', - 'tabellio.agenda.comevent', - 'tabellio.agenda.event'], - start={'query': start, 'range': 'min'}, - end={'query': end, 'range': 'max'}, - sort_on='start') - if len(r) == 0: - return '' - return r[-1].getURL() - + monthly_view = MonthlyView(self.context, init_calendar=True) + serie_of_events = monthly_view.get_events_from_catalog( + start, end, portal_type=['tabellio.agenda.parlevent', + 'tabellio.agenda.comevent', + 'tabellio.agenda.event']) + for i, event in enumerate(serie_of_events): + event_id = ((type(event.getId) is str) and event.getId or event.getId()) + if event_id == context.id: + if i == 0: + return None + return serie_of_events[i-1].getURL() + return None def last_docs(self): catalog = getToolByName(self.context, 'portal_catalog')