Exemple #1
0
def list_tracks(request, slug):
    event = Event.get_by_slug(slug)
    tracks = event.tracks()
    return [{
        'name': track.name,
        'schedule': track.get_talks(event)
    } for track in tracks]
Exemple #2
0
def raffle_gift(request, slug, gift_id, match=False):
    try:
        event = Event.get_by_slug(slug)
        raffle = event.raffle
    except (Event.DoesNotExist, Raffle.DoesNotExist):
        return redirect('/')
    current_gift = Gift.objects.get(pk=gift_id)
    if match:
        if current_gift.awarded_ticket:
            current_gift.missing_tickets.add(current_gift.awarded_ticket)
        current_gift.awarded_ticket = raffle.get_random_ticket()
        current_gift.awarded_at = datetime.datetime.now()
        current_gift.save()
    next_gift = raffle.get_undelivered_gifts().first()
    progress_value = current_gift.order() / raffle.gifts.count() * 100
    exist_available_tickets = raffle.get_available_tickets().count() > 0
    return render(
        request, 'events/raffle-gift.html', {
            'event': event,
            'current_gift': current_gift,
            'next_gift': next_gift,
            'match': match,
            'progress_value': progress_value,
            'exist_available_tickets': exist_available_tickets
        })
Exemple #3
0
def refund_accepted(request, slug, pk):
    event = Event.get_by_slug(slug)
    refund = Refund.objects.get(pk=pk)
    return render(request, 'events/refund-accepted.html', {
        'event': event,
        'refund': refund,
    })
Exemple #4
0
def detail_event(request, slug):
    event = Event.get_by_slug(slug)
    past_events = Event.objects.filter(active=False).exclude(
        pk=event.id).order_by('-start_date')[:3]
    return render(request, 'events/event.html', {
        'event': event,
        'past_events': past_events
    })
Exemple #5
0
def raffle_results(request, slug):
    try:
        event = Event.get_by_slug(slug)
        raffle = event.raffle
    except (Event.DoesNotExist, Raffle.DoesNotExist):
        return redirect('/')
    if request.user.is_staff and raffle.opened:
        raffle.closed_at = datetime.datetime.now()
        raffle.save()
    gifts = raffle.gifts.all()
    return render(request, 'events/raffle-results.html', {
        'event': event,
        'gifts': gifts
    })
Exemple #6
0
def resend_ticket(request, slug):
    event = Event.get_by_slug(slug)
    form = forms.EmailForm(request.POST or None)
    if request.method == 'POST':
        if form.is_valid():
            email = form.cleaned_data['email']
            tickets = find_tickets_by_email(event, email)
            for ticket in tickets:
                send_ticket.delay(ticket)
            return redirect('events:resend_confirmation', slug=event.slug)
    return render(request, 'events/resend-ticket.html', {
        'event': event,
        'form': form,
    })
Exemple #7
0
def raffle(request, slug):
    try:
        event = Event.get_by_slug(slug)
        raffle = event.raffle
    except (Event.DoesNotExist, Raffle.DoesNotExist):
        return redirect('/')
    gifts = raffle.gifts.all()
    candidate_tickets = raffle.get_candidate_tickets()
    success_probability = gifts.count() / candidate_tickets.count() * 100
    return render(
        request, 'events/raffle.html', {
            'event': event,
            'raffle': raffle,
            'gifts': gifts,
            'candidate_tickets': candidate_tickets,
            'success_probability': success_probability,
        })
Exemple #8
0
def refund(request, slug):
    logging.error('refund(request, "{}") starts'.format(slug))
    event = Event.get_by_slug(slug)
    logging.error('   request method is {}'.format(request.method))
    if request.method == 'POST':
        form = forms.RefundForm(event, request.POST)
        logging.error('   form.is_valid() is {}'.format(form.is_valid()))
        logging.error('   form.errors is {}'.format(form.errors))
        if form.is_valid():
            ticket = form.ticket
            rf = Refund(ticket=ticket, event=event)
            rf.save()
            return redirect(links.refund_accepted(event.slug, rf.pk))
    else:
        form = forms.RefundForm(event)
    return render(request, 'events/refund.html', {
        'event': event,
        'form': form,
    })
Exemple #9
0
def buy_ticket(request, slug):
    logger.debug("buy_tickts starts : slug={}".format(slug))
    event = Event.get_by_slug(slug)
    if event.external_tickets_url:
        logger.debug(
            'Redirecting to external URL for selling tickets: url={}'.format(
                event.external_tickets_url))
        return redirect(event.external_tickets_url)
    all_articles = [a for a in event.all_articles()]
    active_articles = [a for a in all_articles if a.is_active()]
    num_active_articles = len(active_articles)
    # num_active_articles = 1
    if num_active_articles == 0:
        return no_available_articles(request, event, all_articles)
    elif num_active_articles == 1:
        article = active_articles[0]
        return redirect(links.ticket_purchase(article.pk))
    else:
        return select_article(request, event, all_articles, active_articles)
Exemple #10
0
def waiting_list(request, slug):
    event = Event.get_by_slug(slug)
    if request.method == 'POST':
        form = forms.WaitingListForm(request.POST)
        if form.is_valid():
            wl = WaitingList(
                event=event,
                name=form.cleaned_data['name'],
                surname=form.cleaned_data['surname'],
                email=form.cleaned_data['email'],
                phone=form.cleaned_data['phone'],
            )
            wl.save()
            return redirect(links.waiting_list_accepted(event.slug))
    else:
        form = forms.WaitingListForm()
    return render(request, 'events/waiting-list.html', {
        'event': event,
        'form': form,
    })
Exemple #11
0
def trade(request, slug, sell_code, buy_code):
    event = Event.get_by_slug(slug)
    refund = Refund.load_by_sell_code(sell_code)
    waiting_list = WaitingList.load_by_buy_code(buy_code)
    """Pseudo codigo
    GET:
    1) A partir del ticket comprado obtener el tipo de ticket (articulo)
    2) A partir del waiting list, obtener los datos del nuevo comprador
    3) Preparar el formulario de compra. Idealmente un solo boton
    POST:
    1) obtener timestamp
    2) Marcar el waiting list como fixed
    3) Marcar el refund como fixed
    4) Notificar a ambos que el acuerdo esta cerrado
    """

    return render(request, 'events/trade.html', {
        'event': event,
        'waiting_list': waiting_list,
        'refund': refund,
    })
Exemple #12
0
def list_speakers(request, slug):
    event = Event.get_by_slug(slug)
    speakers = event.speakers()
    return [serialize_speaker(event, speaker) for speaker in speakers]
Exemple #13
0
def list_sponsors(request, slug):
    event = Event.get_by_slug(slug)
    sponsors = event.memberships.all().order_by('category__role__order')
    return [serializer_sponsor(sponsor) for sponsor in sponsors]
Exemple #14
0
def list_talks(request, slug):
    event = Event.get_by_slug(slug)
    talks = (
        s for s in event.schedule.select_related('slot').order_by('slot__name')
        if s.slot.is_talk())
    return [serialize_talk(talk) for talk in talks]
Exemple #15
0
def resend_confirmation(request, slug):
    event = Event.get_by_slug(slug)
    return render(request, 'events/resend-confirmation.html', {
        'event': event,
        'contact_email': settings.CONTACT_EMAIL,
    })
Exemple #16
0
def waiting_list_accepted(request, slug):
    event = Event.get_by_slug(slug)
    return render(request, 'events/waiting-list-accepted.html', {
        'event': event,
    })
Exemple #17
0
def detail_event(request, slug):
    """Details from event indicated, with URL pointing to more resources.
    """
    event = Event.get_by_slug(slug)
    return serialize_event(event)