Created
April 11, 2013 15:37
-
-
Save geojeff/5364436 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
def events_below_context(self, context, request, permission='view'): | |
""" | |
Get recursive all children of the given context. | |
:result: List with all children of a given context. | |
:rtype: list | |
""" | |
tree = nodes_tree(request, | |
context=context, | |
permission=permission) | |
return [n for n in tree.tolist()[1:] if n.type_info.name == u'Event'] | |
and in the view code: | |
now = datetime.datetime.now() | |
if show_events_scope in ['context_only', 'site_wide']: | |
if show_events_scope == 'context_only': | |
query = session.query(Event).filter(Event.parent_id == context.id) | |
else: # show_events_scope == 'site_wide' | |
query = session.query(Event) | |
future = or_(Event.start > now, Event.end > now) | |
upcoming = query.filter(future).order_by(Event.start).all() | |
past = query.filter(Event.start < now).order_by(desc(Event.start)).all() | |
else: #show_events_scope == 'recursive': | |
events = events_below_context(context, request) | |
if context.type_info.name == u'Event': | |
events.append(context) | |
upcoming = [e for e in events if e.start > now and e.end > now] | |
past = [e for e in events if e.start < now] | |
upcoming = [event for event in upcoming if\ | |
has_permission('view', event, request)] | |
past = [event for event in past if\ | |
has_permission('view', event, request)] |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment