def handle(self, *args, **options): try: conference = args[0] except IndexError: raise CommandError('conference missing') partner_events = defaultdict(list) for f in models.Fare.objects.available(conference=conference).filter(ticket_type='partner'): try: date = datetime.strptime(fare_blob(f, 'data').split(',')[0][:-2] + ' 2011', '%B %d %Y').date() time = datetime.strptime(fare_blob(f, 'departure'), '%H:%M').time() except ValueError: continue partner_events[date].append((f, time)) for sch in models.Schedule.objects.filter(conference=conference): events = list(models.Event.objects.filter(schedule=sch)) for fare, time in partner_events[sch.date]: track_id = 'f%s' % fare.id for e in events: if track_id in e.get_all_tracks_names(): event = e break else: event = models.Event(schedule=sch, talk=None) event.track = 'partner-program ' + track_id event.custom = escape(fare.name) event.start_time = time if time.hour < 13: d = (13 - time.hour) * 60 else: d = (19 - time.hour) * 60 event.duration = d event.save()
def pp_tickets(conf, code=None): fcodes = cmodels.Fare.objects\ .filter(conference=conf, ticket_type='partner')\ .order_by('code')\ .values_list('code', flat=True) qs = {} for fcode in fcodes: qs[fcode] = _tickets(conf, fare_code=fcode) all_attendees = User.objects.filter(id__in=_tickets(conf, ticket_type='partner').values('user')) if code is None: output = [{ 'id': 'all', 'total': all_attendees.count(), 'title': 'Tutti i partecipanti al partner program', }] from conference.templatetags.conference import fare_blob titles = {} for f in cmodels.Fare.objects.filter(code__in=fcodes): titles[f.code] = '%s (%s)' % (f.name, fare_blob(f, 'date')) for fcode in fcodes: output.append({ 'id': fcode, 'total': qs[fcode].count(), 'title': fcode + ' - ' + titles[fcode], }) else: output = { 'columns': ( ('name', 'Name'), ('buyer', 'Buyer'), ('email', 'Email'), ), 'data': [], } data = output['data'] if code == 'all': for x in all_attendees: data.append({ 'name': '', 'buyer': '<a href="%s">%s %s</a>' % ( reverse('admin:auth_user_change', args=(x.id,)), x.first_name, x.last_name), 'email': x.email, 'uid': x.id, }) else: for x in qs[code]: data.append({ 'name': x.name or ('%s %s' % (x.user.first_name, x.user.last_name)), 'buyer': '<a href="%s">%s %s</a>' % ( reverse('admin:auth_user_change', args=(x.user_id,)), x.user.first_name, x.user.last_name), 'email': x.user.email, 'uid': x.user_id, }) return output
def pp_tickets(conf, code=None): fcodes = cmodels.Fare.objects\ .filter(conference=conf, ticket_type='partner')\ .order_by('code')\ .values_list('code', flat=True) qs = {} for fcode in fcodes: qs[fcode] = _tickets(conf, fare_code=fcode) all_attendees = User.objects.filter(id__in=_tickets(conf, ticket_type='partner').values('user')) if code is None: output = [ _create_option('all', 'Tickets partner program', all_attendees) ] from conference.templatetags.conference import fare_blob titles = {} for f in cmodels.Fare.objects.filter(code__in=fcodes): titles[f.code] = '%s (%s)' % (f.name, fare_blob(f, 'date')) for fcode in fcodes: output.append({ 'id': fcode, 'total': qs[fcode].count(), 'title': fcode + ' - ' + titles[fcode], }) else: output = { 'columns': ( ('name', 'Attendee name'), ('buyer', 'Buyer'), ('email', 'Email'), ), 'data': [], } data = output['data'] if code == 'all': for x in all_attendees: data.append({ 'name': '', 'buyer': '<a href="%s">%s %s</a>' % ( reverse('admin:auth_user_change', args=(x.id,)), x.first_name, x.last_name), 'email': x.email, 'uid': x.id, }) else: for x in qs[code]: data.append({ 'name': x.name or ('%s %s' % (x.user.first_name, x.user.last_name)), 'buyer': '<a href="%s">%s %s</a>' % ( reverse('admin:auth_user_change', args=(x.user_id,)), x.user.first_name, x.user.last_name), 'email': x.user.email, 'uid': x.user_id, }) return output
def _partner_as_event(fares): from conference.templatetags.conference import fare_blob partner = defaultdict(list) for f in fares: try: d = datetime.datetime.strptime(fare_blob(f, 'date'), '%Y/%m/%d').date() t = datetime.datetime.strptime(fare_blob(f, 'departure'), '%H:%M').time() dt = int(fare_blob(f, 'duration')) except Exception, e: continue partner[d].append({ 'duration': dt, 'name': f['name'], 'id': f['id'] * -1, 'abstract': f['description'], 'fare': f['code'], 'schedule_id': None, 'tags': set(['partner-program']), 'time': datetime.datetime.combine(d, t), 'tracks': ['partner0'], })
def _partner_as_event(fares): from conference.templatetags.conference import fare_blob partner = defaultdict(list) for f in fares: try: d = datetime.datetime.strptime(fare_blob(f, 'date'), '%Y/%m/%d').date() t = datetime.datetime.strptime(fare_blob(f, 'departure'), '%H:%M').time() dt = int(fare_blob(f, 'duration')) except Exception, e: continue partner[d].append({ 'duration': dt, 'name': f['name'], 'id': f['id'] * -1, 'abstract': f['description'], 'fare': f['code'], 'schedule_id': None, 'tags': set(['partner-program']), 'time': datetime.datetime.combine(d, t), 'tracks': ['partner0'], })
def render_partner_program(context, conference=None): if conference is None: conference = settings.CONFERENCE_CONFERENCE from conference import dataaccess from conference.templatetags.conference import fare_blob fares = [ x for x in dataaccess.fares(conference) if x['ticket_type'] == 'partner' and x['valid'] ] fares.sort(key=lambda x: (slugify(x['name']), fare_blob(x, 'date'))) ctx = Context(context) ctx.update({ 'fares': [ (k, list(v)) for k, v in groupby(fares, key=lambda x: slugify(x['name'])) ], }) return render_to_string('p3/fragments/render_partner_program.html', ctx)
def render_partner_program(context, conference=None): if conference is None: conference = settings.CONFERENCE_CONFERENCE from conference import dataaccess from conference.templatetags.conference import fare_blob fares = [ x for x in dataaccess.fares(conference) if x['ticket_type'] == 'partner' and x['valid'] ] fares.sort(key=lambda x: (slugify(x['name']), fare_blob(x, 'date'))) ctx = Context(context) ctx.update({ 'fares': [ (k, list(v)) for k, v in groupby(fares, key=lambda x: slugify(x['name'])) ], }) return render_to_string('p3/fragments/render_partner_program.html', ctx)
def pp_tickets(conf, code=None): fcodes = ( cmodels.Fare.objects.filter(conference=conf, ticket_type="partner") .order_by("code") .values_list("code", flat=True) ) qs = {} for fcode in fcodes: qs[fcode] = _tickets(conf, fare_code=fcode) all_attendees = User.objects.filter(id__in=_tickets(conf, ticket_type="partner").values("user")) if code is None: output = [{"id": "all", "total": all_attendees.count(), "title": "Tutti i partecipanti al partner program"}] from conference.templatetags.conference import fare_blob titles = {} for f in cmodels.Fare.objects.filter(code__in=fcodes): titles[f.code] = "%s (%s)" % (f.name, fare_blob(f, "date")) for fcode in fcodes: output.append({"id": fcode, "total": qs[fcode].count(), "title": fcode + " - " + titles[fcode]}) else: output = {"columns": (("name", "Name"), ("buyer", "Buyer"), ("email", "Email")), "data": []} data = output["data"] if code == "all": for x in all_attendees: data.append( { "name": "", "buyer": '<a href="%s">%s %s</a>' % (reverse("admin:auth_user_change", args=(x.id,)), x.first_name, x.last_name), "email": x.email, "uid": x.id, } ) else: for x in qs[code]: data.append( { "name": x.name or ("%s %s" % (x.user.first_name, x.user.last_name)), "buyer": '<a href="%s">%s %s</a>' % (reverse("admin:auth_user_change", args=(x.user_id,)), x.user.first_name, x.user.last_name), "email": x.user.email, "uid": x.user_id, } ) return output