Beispiel #1
0
    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()
Beispiel #2
0
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
Beispiel #3
0
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
Beispiel #4
0
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'],
        })
Beispiel #5
0
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'],
        })
Beispiel #6
0
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)
Beispiel #7
0
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)
Beispiel #8
0
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