reuse flattening of events line in homepage (#1111)

This commit is contained in:
Frédéric Péters 2011-12-06 22:02:05 +01:00
parent e02700404b
commit 3868cf9dbc
1 changed files with 27 additions and 21 deletions

View File

@ -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')