Skip to content

Instantly share code, notes, and snippets.

@geojeff
Created April 11, 2013 15:37
Show Gist options
  • Save geojeff/5364436 to your computer and use it in GitHub Desktop.
Save geojeff/5364436 to your computer and use it in GitHub Desktop.
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