def my_schedule(request, conference): qs = cmodels.Event.objects\ .filter(eventinterest__user=request.user, eventinterest__interest__gt=0)\ .filter(schedule__conference=conference)\ .values('id', 'schedule') events = defaultdict(list) for x in qs: events[x['schedule']].append(x['id']) qs = cmodels.EventBooking.objects\ .filter(user=request.user, event__schedule__conference=conference)\ .values('event', 'event__schedule') for x in qs: events[x['event__schedule']].append(x['event']) qs = cmodels.Ticket.objects\ .filter(user=request.user)\ .filter(fare__conference=conference, fare__ticket_type='partner')\ .values_list('fare', flat=True) from conference.dataaccess import fares, schedules_data pfares = [f for f in fares(conference) if f['id'] in qs] partner = _partner_as_event(pfares) schedules = schedules_data(events.keys()) tts = _build_timetables(schedules, events=events, partner=partner) ctx = { 'conference': conference, 'sids': [x[0] for x in tts], 'timetables': tts, } return render(request, 'p3/my_schedule.html', ctx)
def my_schedule(request, conference): qs = cmodels.Event.objects\ .filter(eventinterest__user=request.user, eventinterest__interest__gt=0)\ .filter(schedule__conference=conference)\ .values('id', 'schedule') events = defaultdict(list) for x in qs: events[x['schedule']].append(x['id']) qs = cmodels.EventBooking.objects\ .filter(user=request.user, event__schedule__conference=conference)\ .values('event', 'event__schedule') for x in qs: events[x['event__schedule']].append(x['event']) qs = cmodels.Ticket.objects\ .filter(user=request.user)\ .filter(fare__conference=conference, fare__ticket_type='partner')\ .values_list('fare', flat=True) from conference.dataaccess import fares, schedules_data pfares = [ f for f in fares(conference) if f['id'] in qs ] partner = _partner_as_event(pfares) schedules = schedules_data(events.keys()) tts = _build_timetables(schedules, events=events, partner=partner) ctx = { 'conference': conference, 'sids': [ x[0] for x in tts ], 'timetables': tts, } return render(request, 'p3/my_schedule.html', ctx)
def covers(request, conference): events = settings.VIDEO_COVER_EVENTS(conference) if not events: raise http.Http404() schedules = dataaccess.schedules_data( models.Schedule.objects.filter(conference=conference).order_by("date").values_list("id", flat=True) ) from collections import defaultdict tracks = defaultdict(dict) for s in schedules: for t in s["tracks"].values(): tracks[s["id"]][t.track] = t.title grouped = defaultdict(lambda: defaultdict(list)) for e in dataaccess.events(eids=events): if not e["tracks"]: continue sid = e["schedule_id"] t = tracks[sid][e["tracks"][0]] grouped[sid][t].append(e) ordered = [] for s in schedules: data = grouped[s["id"]] if not data: continue ordered.append((s, sorted(data.items()))) ctx = {"conference": conference, "events": ordered} return render(request, "conference/covers.html", ctx)
def _conference_timetables(conference): """ Return the TimeTable about the conference.""" # The timetables must contain both events in the db and "artificial" # events from partner program sids = cmodels.Schedule.objects\ .filter(conference=conference)\ .values_list('id', flat=True) from conference.dataaccess import fares, schedules_data pfares = [f for f in fares(conference) if f['ticket_type'] == 'partner'] partner = _partner_as_event(pfares) schedules = schedules_data(sids) tts = _build_timetables(schedules, partner=partner) return tts
def _conference_timetables(conference): """ Restituisce le TimeTable relative alla conferenza. """ # Le timetable devono contenere sia gli eventi presenti nel db sia degli # eventi "artificiali" del partner program sids = cmodels.Schedule.objects\ .filter(conference=conference)\ .values_list('id', flat=True) from conference.dataaccess import fares, schedules_data pfares = [ f for f in fares(conference) if f['ticket_type'] == 'partner' ] partner = _partner_as_event(pfares) schedules = schedules_data(sids) tts = _build_timetables(schedules, partner=partner) return tts
def _conference_timetables(conference): """ Restituisce le TimeTable relative alla conferenza. """ # Le timetable devono contenere sia gli eventi presenti nel db sia degli # eventi "artificiali" del partner program sids = cmodels.Schedule.objects\ .filter(conference=conference)\ .values_list('id', flat=True) from conference.dataaccess import fares, schedules_data pfares = [f for f in fares(conference) if f['ticket_type'] == 'partner'] partner = _partner_as_event(pfares) schedules = schedules_data(sids) tts = _build_timetables(schedules, partner=partner) return tts
def _conference_timetables(conference): """ Restituisce le TimeTable relative alla conferenza. """ # The timetables must contain both events in the db and "artificial" # events from partner program sids = cmodels.Schedule.objects\ .filter(conference=conference)\ .values_list('id', flat=True) from conference.dataaccess import fares, schedules_data pfares = [ f for f in fares(conference) if f['ticket_type'] == 'partner' ] partner = _partner_as_event(pfares) schedules = schedules_data(sids) tts = _build_timetables(schedules, partner=partner) return tts
def schedule_view(self, request, cid): conf = models.Conference.objects.get(code=cid) schedules = dataaccess.schedules_data(models.Schedule.objects\ .filter(conference=conf)\ .values_list('id', flat=True) ) tracks = [] for sch in schedules: tks = sorted(sch['tracks'].values(), key=lambda x: x.order) tracks.append([sch['id'], [t for t in tks]]) from conference.forms import EventForm return render_to_response( 'admin/conference/conference/schedule_view.html', { 'conference': conf, 'tracks': tracks, 'talks': self.schedule_view_talks(conf), 'event_form': EventForm(), }, context_instance=template.RequestContext(request))
def schedule_view(self, request, cid): conf = models.Conference.objects.get(code=cid) schedules = dataaccess.schedules_data(models.Schedule.objects\ .filter(conference=conf)\ .values_list('id', flat=True) ) tracks = [] for sch in schedules: tks = sorted(sch['tracks'].values(), key=lambda x: x.order) tracks.append([ sch['id'], [ t for t in tks ] ]) from conference.forms import EventForm return render_to_response( 'admin/conference/conference/schedule_view.html', { 'conference': conf, 'tracks': tracks, 'talks': self.schedule_view_talks(conf), 'event_form': EventForm(), }, context_instance=template.RequestContext(request) )
def covers(request, conference): events = settings.VIDEO_COVER_EVENTS(conference) if not events: raise http.Http404() schedules = dataaccess.schedules_data( models.Schedule.objects\ .filter(conference=conference)\ .order_by('date')\ .values_list('id', flat=True) ) from collections import defaultdict tracks = defaultdict(dict) for s in schedules: for t in s['tracks'].values(): tracks[s['id']][t.track] = t.title grouped = defaultdict(lambda: defaultdict(list)) for e in dataaccess.events(eids=events): if not e['tracks']: continue sid = e['schedule_id'] t = tracks[sid][e['tracks'][0]] grouped[sid][t].append(e) ordered = [] for s in schedules: data = grouped[s['id']] if not data: continue ordered.append((s, sorted(data.items()))) ctx = { 'conference': conference, 'events': ordered, } return render(request, 'conference/covers.html', ctx)