예제 #1
0
    def get_context_data(self, **kwargs):
        event = kwargs['object']

        context = super().get_context_data()
        context['date'] = self.kwargs['date']
        date = datetime.strptime(self.kwargs['date'], '%Y-%m-%d')

        rooms_data = {}
        rooms = []
        for room in event.location.rooms.all().order_by('pk'):
            rooms_data[room.slugify()] = room
            rooms.append({
                room.slugify():
                event.schedules.filter(start__date=date.date(),
                                       room=room).order_by('start'),
            })

        context['no_room'] = event.schedules.filter(
            start__date=date.date(), room=None).order_by('start')
        context['rooms'] = rooms
        context['rooms_data'] = rooms_data

        def daterange(start_date, end_date):
            for n in range(int((end_date - start_date).days) + 1):
                yield start_date + timedelta(n)

        context['interval'] = []
        for single_date in daterange(event.date_from, event.date_to):
            context['interval'].append(single_date)

        update_event_context(event, context)

        return context
예제 #2
0
def event_public_tickets(request, slug):
    event = get_object_or_404(Event.objects.published(), slug=slug)
    context = dict()
    update_event_context(event, context)

    available_tickets = event.tickettype_set.filter(accessibility=TicketType.PUBLIC)\
        .exclude(attendee_type=TicketType.AID).exclude(attendee_type=TicketType.VOLUNTEER)\
        .exclude(attendee_type=TicketType.PRESS).order_by('price', 'title')
    available_tickets = [
        t for t in available_tickets
        if t._get_current_status() in (TicketType.ACTIVE, TicketType.SOLDOUT)
    ]
    paginator = Paginator(available_tickets, 10)
    page = request.GET.get('page')

    try:
        available_tickets = paginator.page(page)
    except PageNotAnInteger:
        available_tickets = paginator.page(1)
    except EmptyPage:
        available_tickets = paginator.page(paginator.num_pages)

    context['tickets'] = available_tickets
    context[
        'dispaly_ticket_availability'] = settings.DISPLAY_TICKET_AVAILABILITY

    return render(request=request,
                  template_name='konfera/event/public_tickets.html',
                  context=context)
예제 #3
0
def event_public_tickets(request, slug):
    event = get_object_or_404(Event.objects.published(), slug=slug)
    context = dict()
    update_event_context(event, context)

    available_tickets = event.tickettype_set.filter(accessibility=TicketType.PUBLIC)\
        .exclude(attendee_type=TicketType.AID).exclude(attendee_type=TicketType.VOLUNTEER)\
        .exclude(attendee_type=TicketType.PRESS)
    available_tickets = [
        t for t in available_tickets
        if t._get_current_status() == TicketType.ACTIVE
    ]
    paginator = Paginator(available_tickets, 10)
    page = request.GET.get('page')

    try:
        available_tickets = paginator.page(page)
    except PageNotAnInteger:
        available_tickets = paginator.page(1)
    except EmptyPage:
        available_tickets = paginator.page(paginator.num_pages)

    context['tickets'] = available_tickets

    return render(request=request,
                  template_name='konfera/event/public_tickets.html',
                  context=context)
예제 #4
0
def order_payment(request, order_uuid):
    order = get_object_or_404(Order, uuid=order_uuid)
    context = dict()

    if order.status == Order.PAID:
        return redirect('order_details', order_uuid=str(order.uuid))

    if order.status == Order.AWAITING:
        context['form'] = form = ReceiptForm(request.POST or None,
                                             instance=order.receipt_of)

        if form.is_valid():
            form.save()
            messages.success(request,
                             _('Your order details has been updated.'))

    if order.event:
        update_event_context(order.event, context, show_sponsors=False)

    context['PAYPAL_ADDITIONAL_CHARGE'] = settings.PAYPAL_ADDITIONAL_CHARGE
    context['order'] = order
    update_order_status_context(order.status, context)

    return render(request=request,
                  template_name='payments/order_payment.html',
                  context=context)
예제 #5
0
def event_sponsors_list_view(request, slug):
    event = get_object_or_404(Event.objects.published(), slug=slug)
    context = dict()
    update_event_context(event, context)

    return render(request=request,
                  template_name='konfera/event/sponsors.html',
                  context=context)
예제 #6
0
    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        update_event_context(self.event, context)

        context['speaker_form'] = SpeakerForm(self.request.POST or None,
                                              prefix='speaker')
        context['talk_form'] = TalkForm(self.request.POST or None,
                                        prefix='talk')

        return context
예제 #7
0
def event_speakers_list_view(request, slug):
    event = get_object_or_404(Event.objects.published(), slug=slug)
    context = dict()
    context['talks'] = event.talk_set.filter(
        status=Talk.APPROVED).order_by('primary_speaker__last_name')

    update_event_context(event, context)

    return render(request=request,
                  template_name='konfera/event/speakers.html',
                  context=context)
예제 #8
0
def event_details_view(request, slug):
    event = get_object_or_404(Event.objects.published(), slug=slug)
    context = dict()
    update_event_context(event, context)

    if event.event_type == Event.MEETUP:
        return render(request=request,
                      template_name='konfera/event/details_meetup.html',
                      context=context)

    return render(request=request,
                  template_name='konfera/event/details_conference.html',
                  context=context)
예제 #9
0
def event_venue_view(request, slug):
    event = get_object_or_404(Event.objects.published(), slug=slug)

    if not event.location or not event.location.get_here:
        raise Http404

    context = dict()
    context['venue'] = event.location.get_here
    update_event_context(event, context)

    return render(request=request,
                  template_name='konfera/event/venue.html',
                  context=context)
예제 #10
0
def event_about_us(request, slug):
    event = get_object_or_404(Event.objects.published(), slug=slug)
    context = dict()
    update_event_context(event, context, show_sponsors=False)

    if not event.organizer:
        raise Http404(
            _('Organizer has not been set for event %s' % event.title))

    context['organizer'] = event.organizer

    return render(request=request,
                  template_name='konfera/event/event_organizer.html',
                  context=context)
예제 #11
0
    def get_context_data(self, **kwargs):
        context = super().get_context_data()
        context['order'] = self.object
        context['allow_receipt_edit'] = self.object.status == Order.AWAITING
        context['allow_pdf_storage'] = settings.ENABLE_ORDER_PDF_GENERATION
        context['rendering_pdf'] = False

        if self.object.event:
            update_event_context(self.object.event,
                                 context,
                                 show_sponsors=False)

        update_order_status_context(self.object.status, context)

        return context
예제 #12
0
def event_coc(request, slug):
    event = get_object_or_404(Event.objects.published(), slug=slug)

    if not event.coc:
        raise Http404

    context = dict()
    context['coc'] = event.coc
    context['phone'] = event.coc_phone
    context['phone2'] = event.coc_phone2

    update_event_context(event, context, show_sponsors=False)

    return render(request=request,
                  template_name='konfera/event/coc.html',
                  context=context)
예제 #13
0
def event_speakers_list_view(request, slug):
    event = get_object_or_404(Event.objects.published(), slug=slug)
    context = dict()

    context['speakers'] = Speaker.objects.filter(
        (Q(primary_speaker_talks__event__slug=slug)
         | Q(secondary_speaker_talks__event__slug=slug))
        & (Q(primary_speaker_talks__status=Talk.PUBLISHED)
           | Q(secondary_speaker_talks__status=Talk.PUBLISHED))).order_by(
               'last_name').distinct()

    update_event_context(event, context)

    return render(request=request,
                  template_name='konfera/event/speakers.html',
                  context=context)
예제 #14
0
def event_sponsors_list_view(request, slug):
    event = get_object_or_404(Event.objects.published(), slug=slug)
    context = dict()
    context['sponsors'] = event.sponsors.all().order_by('type', 'title')
    context['one_last_sponsor'] = (1, 4, 7, 10, 13, 16, 19)
    context['two_last_sponsor'] = (2, 5, 8, 11, 14, 17, 20)
    context['supporters'] = Ticket.objects.filter(order__status=Order.PAID)\
        .filter(type__attendee_type=TicketType.SUPPORTER)\
        .filter(type__event__pk=event.pk)\
        .exclude(status=Ticket.CANCELLED)

    update_event_context(event, context, show_sponsors=False)

    return render(request=request,
                  template_name='konfera/event/sponsors.html',
                  context=context)
예제 #15
0
    def get_context_data(self, **kwargs):
        event = kwargs['object']

        context = super().get_context_data()
        context['day'] = int(self.kwargs['day'])

        date = event.date_from + timedelta(days=context['day'])
        context['schedule'] = event.schedules.filter(
            start__date=date.date()).order_by('room', 'start')

        event_duration = event.date_to - event.date_from
        context['interval'] = [{
            'day': day,
            'date': event.date_from + timedelta(days=day)
        } for day in range(event_duration.days + 1)]

        update_event_context(event, context)

        return context
예제 #16
0
def event_order_detail(request, order_uuid):
    order = get_object_or_404(Order, uuid=order_uuid)
    context = dict()

    if order.event:
        update_event_context(order.event, context, show_sponsors=False)

    if order.status == Order.AWAITING:
        context['form'] = form = ReceiptForm(request.POST or None,
                                             instance=order.receipt_of)

        if form.is_valid():
            form.save()
            messages.success(request,
                             _('Your order details has been updated.'))

    context['order'] = order
    update_order_status_context(order.status, context)

    return render(request=request,
                  template_name='konfera/order_details.html',
                  context=context)