def livestream(request): if is_streaming(): event = get_streaming_event() else: event = get_next_streaming_event() return render_to_response('www/livestream.html', RequestContext(request, { 'event': event, }))
def ajax_index_events(request, year=None, week=None): today = datetime.date.today() week = int(week or today.isocalendar()[1]) year = int(year or today.year) # %Y: year, # %W: week of the year (starting with first monday of the year), # %w: weekday (0 being sunday) start = week_start_date(year, week) end = start + relativedelta(days=7) # get all events in this week # TODO: this will fail for events that last more than a week # TODO: for this purpose, we should just use postgres daterange sooner or later. q = Event.objects.filter(public=True, start_date__range=(start, end), end_date__range=(start, end)) events = q.order_by('start_date').all() # figure out if we are streaming now streaming_event = None if week == int(today.isocalendar()[1]) and is_streaming(): streaming_event = get_streaming_event() # TODO: a bug with calculating week number prev_week_date = start - relativedelta(days=7) next_week_date = start + relativedelta(days=7) ret = dict() ret['prev_url'] = reverse('ajax_events_week', kwargs=dict(year=prev_week_date.isocalendar()[0], week=prev_week_date.isocalendar()[1])) ret['next_url'] = reverse('ajax_events_week', kwargs=dict(year=next_week_date.isocalendar()[0], week=next_week_date.isocalendar()[1])) ret['events'] = {} dict_events = [] for event in events: d = dict(id=event.id, title=event.title, start_date=ljubljana_tz.localize(event.start_date), end_date=ljubljana_tz.localize(event.end_date), place=event.place.name, url=event.get_absolute_url()) d['project'] = event.project.verbose_name or event.project.name d['announce'] = truncatewords(safe(striptags(event.announce)), 50) d['image'] = event.event_image.image.url if streaming_event: d['is_streaming'] = streaming_event.id == event.id else: d['is_streaming'] = False dict_events.append(d) # group by events with the days in a week for i, day in enumerate(map(lambda i: start + relativedelta(days=i), range(0, 7))): ret['events'][i] = dict( date=format_(day, 'D, d. b').capitalize(), short_date=format_(day, 'd. n.'), events=[], is_today=day == today, ) for event in dict_events: start_date = datetime.date(event['start_date'].year, event['start_date'].month, event['start_date'].day) end_date = datetime.date(event['end_date'].year, event['end_date'].month, event['end_date'].day) # TODO: order of events is wrong if start_date <= day <= end_date: ret['events'][i]['events'].append(event) # TODO: note if event hasnt started today return HttpResponse(simplejson.dumps(ret, cls=DjangoJSONEncoder), mimetype='application/json')