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]
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 })
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, })
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 })
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 })
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, })
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, })
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, })
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)
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, })
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, })
def list_speakers(request, slug): event = Event.get_by_slug(slug) speakers = event.speakers() return [serialize_speaker(event, speaker) for speaker in speakers]
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]
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]
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, })
def waiting_list_accepted(request, slug): event = Event.get_by_slug(slug) return render(request, 'events/waiting-list-accepted.html', { 'event': event, })
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)