def gather_events(self, start=None, stop=None, **kw): from Products.CMFCore import utils as cmfutils from Products.CMFCore.utils import getToolByName from p4a.calendar import interfaces from p4a.plonecalendar.eventprovider import _make_zcatalog_query catalog = cmfutils.getToolByName(self.context, 'portal_catalog') path = '/'.join(self.context.getPhysicalPath()) kw = _make_zcatalog_query(start, stop, kw) if self.context.portal_type != 'MemberSpace': event_brains = catalog(portal_type='Event', path=path, **kw) else: memberid = self.context.getId() portal = self.context.portal_url.getPortalObject() if portal <> None: path = "/".join(portal.getPhysicalPath()) event_brains = catalog(portal_type='Event', path=path,modifiers = memberid, **kw) return (interfaces.IEvent(x) for x in event_brains)
def gather_events(self, start=None, stop=None, **kw): from Products.CMFCore import utils as cmfutils from Products.CMFCore.utils import getToolByName from p4a.calendar import interfaces from p4a.plonecalendar.eventprovider import _make_zcatalog_query catalog = cmfutils.getToolByName(self.context, 'portal_catalog') path = '/'.join(self.context.getPhysicalPath()) kw = _make_zcatalog_query(start, stop, kw) if self.context.portal_type != 'MemberSpace': event_brains = catalog(portal_type='Event', path=path, **kw) else: memberid = self.context.getId() portal = self.context.portal_url.getPortalObject() if portal <> None: path = "/".join(portal.getPhysicalPath()) event_brains = catalog(portal_type='Event', path=path, modifiers=memberid, **kw) return (interfaces.IEvent(x) for x in event_brains)
def gather_events(self, start=None, stop=None, **kw): catalog = cmfutils.getToolByName(self.context, 'portal_catalog') # search in the navigation root of the currently selected language # and in the canonical root path with Language = preferredLanguage or # neutral pstate = getMultiAdapter((self.context, self.context.request), name=u'plone_portal_state') nav_root_path = pstate.navigation_root_path() paths = [nav_root_path] nav_root = pstate.portal().restrictedTraverse(nav_root_path) try: canonical_path = '/'.join( nav_root.getCanonical().getPhysicalPath()) except AttributeError: pass else: if canonical_path not in paths: paths.append(canonical_path) portal_languages = getToolByName(self.context, 'portal_languages') preflang = portal_languages.getPreferredLanguage() # If we are in the root (i. e. not inside a subsite), restrict # to the current folder. This restores the p4a.calendar's behaviour of # gather_events, since that also returns only events from the current # calendar. oshaview = getMultiAdapter((self.context, self.context.request), name=u'oshaview') subsite = oshaview.getCurrentSubsite() if subsite is None: paths = ['/'.join(self.context.getPhysicalPath())] query = And( Eq('portal_type', 'Event'), In('path', paths), In('Language', ['', preflang]), ) # Not sure where this key comes from, but it is not an index... for bad in ['-C', 'set_language']: if bad in kw: del kw[bad] kw = _make_zcatalog_query(start, stop, kw) # apparently arbitrary keys can be inserted and if they are not named like a cat index, advanced query will shout indexes = catalog.indexes() for key in kw.keys(): if key not in indexes: del kw[key] for key, value in kw.items(): if key in ['start', 'end']: if value['range'] == 'max': query = And(query, Le(key, value['query'])) else: query = And(query, Ge(key, value['query'])) else: query = And(query, Eq(key, value)) if hasattr(catalog, 'getZCatalog'): catalog = catalog.getZCatalog() event_brains = catalog.evalAdvancedQuery(query, (('Date', 'desc'),)) return (OSHBrainEvent(x) for x in event_brains)