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))
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
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))
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
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
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
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))
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
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