Beispiel #1
0
def custom_form_form(request, *args, **kwargs):
    event = get_object_or_404(Event.objects.select_related('organization'),
                              slug=kwargs['event_slug'],
                              organization__slug=kwargs['organization_slug'])
    if not event.editable_by(request.user):
        raise Http404
    if 'pk' in kwargs:
        custom_form = get_object_or_404(CustomForm, pk=kwargs['pk'])
    else:
        custom_form = CustomForm()
    if request.method == 'POST':
        form = CustomFormForm(event, request.POST, instance=custom_form)
        formset = CustomFormFieldFormSet(data=request.POST, files=request.FILES, instance=custom_form, prefix='fields')
        form.is_valid()
        formset.is_valid()
        if form.is_valid() and formset.is_valid():
            form.save()
            formset.save()
            url = reverse('brambling_form_list',
                          kwargs={'event_slug': event.slug,
                                  'organization_slug': event.organization.slug})
            return HttpResponseRedirect(url)
    else:
        form = CustomFormForm(event, instance=custom_form)
        formset = CustomFormFieldFormSet(instance=custom_form, prefix='fields')
    context = {
        'event': event,
        'custom_form': form.instance,
        'form': form,
        'formset': formset,
        'event_admin_nav': get_event_admin_nav(event, request),
    }
    return render_to_response('brambling/event/organizer/custom_form_form.html',
                              context,
                              context_instance=RequestContext(request))
Beispiel #2
0
 def get_context_data(self, **kwargs):
     context = super(CustomFormListView, self).get_context_data(**kwargs)
     context.update({
         'event': self.event,
         'event_admin_nav': get_event_admin_nav(self.event, self.request),
     })
     return context
Beispiel #3
0
def discount_form(request, *args, **kwargs):
    event = get_object_or_404(Event.objects.select_related('organization'),
                              slug=kwargs['event_slug'],
                              organization__slug=kwargs['organization_slug'])
    if not event.editable_by(request.user):
        raise Http404
    if 'pk' in kwargs:
        discount = get_object_or_404(Discount, pk=kwargs['pk'])
    else:
        discount = None
    if request.method == 'POST':
        form = DiscountForm(event, request.POST, instance=discount)
        with timezone.override(event.timezone):
            # Clean as the event's timezone - datetimes
            # input correctly.
            if form.is_valid():
                form.save()
                url = reverse('brambling_discount_list',
                              kwargs={'event_slug': event.slug,
                                      'organization_slug': event.organization.slug})
                return HttpResponseRedirect(url)
    else:
        form = DiscountForm(event, instance=discount)
    context = {
        'event': event,
        'discount': form.instance,
        'discount_form': form,
        'cart': None,
        'event_admin_nav': get_event_admin_nav(event, request),
    }
    return render_to_response('brambling/event/organizer/discount_form.html',
                              context,
                              context_instance=RequestContext(request))
Beispiel #4
0
 def get_context_data(self, **kwargs):
     context = super(DiscountListView, self).get_context_data(**kwargs)
     context.update({
         'event': self.event,
         'cart': None,
         'event_admin_nav': get_event_admin_nav(self.event, self.request),
     })
     return context
Beispiel #5
0
 def get_context_data(self, **kwargs):
     context = super(EventUpdateView, self).get_context_data(**kwargs)
     context.update({
         'cart': None,
         'event_admin_nav': get_event_admin_nav(self.object, self.request),
         'organization': self.organization,
         'organization_editable_by': self.organization_editable_by,
     })
     return context
Beispiel #6
0
 def get_context_data(self, **kwargs):
     context = super(EventTableView, self).get_context_data(**kwargs)
     context.update({
         'event': self.event,
         'event_admin_nav': get_event_admin_nav(self.event, self.request),
         'saved_reports': SavedReport.objects.filter(event=self.event, report_type=self.report_type),
     })
     if self.request.GET.get('report'):
         for report in context['saved_reports']:
             if str(report.pk) == self.request.GET['report']:
                 context['report'] = report
     return context
 def get_context_data(self, **kwargs):
     context = super(OrderMixin, self).get_context_data(**kwargs)
     context.update({
         'event': self.event,
         'order': self.order,
         'event_admin_nav': get_event_admin_nav(self.event, self.request),
         'site': get_current_site(self.request),
         'workflow': self.workflow,
         'current_step': self.current_step,
         'next_step': self.current_step.next_step if self.current_step else None,
     })
     return context
 def get_context_data(self, **kwargs):
     context = super(OrderMixin, self).get_context_data(**kwargs)
     context.update({
         'event': self.event,
         'order': self.order,
         # Use codes if a code was used and there's no authenticated user.
         'code_in_url': (True if self.kwargs.get('code') and
                         not self.request.user.is_authenticated() else False),
         'event_admin_nav': get_event_admin_nav(self.event, self.request),
         'site': get_current_site(self.request),
         'workflow': self.workflow,
         'current_step': self.current_step,
         'next_step': self.current_step.next_step if self.current_step else None,
     })
     return context
Beispiel #9
0
def item_form(request, *args, **kwargs):
    event = get_object_or_404(Event.objects.select_related('organization'),
                              slug=kwargs['event_slug'],
                              organization__slug=kwargs['organization_slug'])
    if not event.editable_by(request.user):
        raise Http404
    if 'pk' in kwargs:
        item = get_object_or_404(Item, pk=kwargs['pk'])
    else:
        item = Item()
    if request.method == 'POST':
        form = ItemForm(event, request.POST, instance=item)
        image_formset = ItemImageFormSet(data=request.POST, files=request.FILES, instance=item, prefix='image')
        formset = ItemOptionFormSet(event, request.POST, instance=item, prefix='option')
        # Always run all.
        with timezone.override(event.timezone):
            # Clean as the event's timezone - datetimes
            # input correctly.
            form.is_valid()
            image_formset.is_valid()
            formset.is_valid()
        if form.is_valid() and image_formset.is_valid() and formset.is_valid():
            form.save()
            image_formset.save()
            formset.save()
            url = reverse('brambling_item_list',
                          kwargs={'event_slug': event.slug, 'organization_slug': event.organization.slug})
            return HttpResponseRedirect(url)
    else:
        form = ItemForm(event, instance=item)
        image_formset = ItemImageFormSet(instance=item, prefix='image')
        formset = ItemOptionFormSet(event, instance=item, prefix='option')
    context = {
        'event': event,
        'item': item,
        'item_form': form,
        'itemimage_formset': image_formset,
        'itemoption_formset': formset,
        'cart': None,
        'event_admin_nav': get_event_admin_nav(event, request),
    }
    return render_to_response('brambling/event/organizer/item_form.html',
                              context,
                              context_instance=RequestContext(request))
Beispiel #10
0
 def get_context_data(self, **kwargs):
     context = super(OrderDetailView, self).get_context_data(**kwargs)
     if self.payment_form.is_bound:
         active = 'payment'
     elif self.discount_form.is_bound:
         active = 'discount'
     elif self.notes_form.is_bound or self.request.GET.get('active') == 'notes':
         active = 'notes'
     else:
         active = 'summary'
     context.update({
         'payment_form': self.payment_form,
         'discount_form': self.discount_form,
         'notes_form': self.notes_form,
         'order': self.order,
         'event': self.event,
         'event_admin_nav': get_event_admin_nav(self.event, self.request),
         'active': active,
         'attendees': self.order.attendees.all(),
     })
     context.update(self.order.get_summary_data())
     return context
Beispiel #11
0
    def get_context_data(self, **kwargs):
        # For the summary, we only display completed order information.
        # We can show detailed information on a more detailed finances
        # page.
        context = super(EventSummaryView, self).get_context_data(**kwargs)

        itemoptions = ItemOption.objects.filter(
            item__event=self.event
        ).select_related('item')

        gross_sales = 0
        itemoption_map = {}

        for itemoption in itemoptions:
            itemoption_map[itemoption.pk] = itemoption
            itemoption.boughtitem__count = BoughtItem.objects.filter(
                item_option=itemoption,
                status=BoughtItem.BOUGHT
            ).count()
            gross_sales += itemoption.price * itemoption.boughtitem__count

        discounts = list(Discount.objects.filter(
            event=self.event
        ).annotate(used_count=Count('boughtitemdiscount')))

        confirmed_purchases = Transaction.objects.filter(
            transaction_type=Transaction.PURCHASE,
            event=self.event,
            is_confirmed=True,
        ).aggregate(sum=Sum('amount'))['sum'] or 0

        pending_purchases = Transaction.objects.filter(
            transaction_type=Transaction.PURCHASE,
            event=self.event,
            is_confirmed=False,
        ).aggregate(sum=Sum('amount'))['sum'] or 0

        refunds = Transaction.objects.filter(
            transaction_type=Transaction.REFUND,
            event=self.event,
        ).aggregate(sum=Sum('amount'))['sum'] or 0

        sums = Transaction.objects.filter(
            event=self.event,
        ).aggregate(
            amount=Sum('amount'),
            application_fee=Sum('application_fee'),
            processing_fee=Sum('processing_fee'),
        )

        fees = (sums['application_fee'] or 0) + (sums['processing_fee'] or 0)

        context.update({
            'event': self.event,
            'event_admin_nav': get_event_admin_nav(self.event, self.request),

            'attendee_count': Attendee.objects.filter(order__event=self.event).count(),
            'itemoptions': itemoptions,
            'discounts': discounts,

            'confirmed_purchases': confirmed_purchases,
            'pending_purchases': pending_purchases,

            'refunds': refunds,
            'fees': -1 * fees,

            'net_total': (sums['amount'] or 0) - fees,
        })

        if self.event.collect_housing_data:
            context.update({
                'attendee_requesting_count': Attendee.objects.filter(order__event=self.event, housing_status=Attendee.NEED).count(),
                'attendee_arranged_count': Attendee.objects.filter(order__event=self.event, housing_status=Attendee.HAVE).count(),
                'attendee_home_count': Attendee.objects.filter(order__event=self.event, housing_status=Attendee.HOME).count(),
            })
        return context