コード例 #1
0
    def post(self, request, *args, **kwargs):
        failed = not self.save() or not self.invoice_form.is_valid()
        if failed:
            messages.error(self.request,
                           _("We had difficulties processing your input. Please review the errors below."))
            return self.get(request, *args, **kwargs)
        if hasattr(self.invoice_form, 'save'):
            self.invoice_form.save()
        self.order.log_action('pretix.event.order.modified', {
            'invoice_data': self.invoice_form.cleaned_data,
            'data': [{
                k: (f.cleaned_data.get(k).name
                    if isinstance(f.cleaned_data.get(k), File)
                    else f.cleaned_data.get(k))
                for k in f.changed_data
            } for f in self.forms]
        })
        order_modified.send(sender=self.request.event, order=self.order)
        if self.invoice_form.has_changed():
            success_message = ('Your invoice address has been updated. Please contact us if you need us '
                               'to regenerate your invoice.')
            messages.success(self.request, _(success_message))

        invalidate_cache.apply_async(kwargs={'event': self.request.event.pk, 'order': self.order.pk})
        CachedTicket.objects.filter(order_position__order=self.order).delete()
        CachedCombinedTicket.objects.filter(order=self.order).delete()
        return redirect(self.get_order_url())
コード例 #2
0
    def post(self, request, *args, **kwargs):
        failed = not self.save() or not self.invoice_form.is_valid()
        if failed:
            messages.error(
                self.request,
                _("We had difficulties processing your input. Please review the errors below."
                  ))
            return self.get(request, *args, **kwargs)
        if hasattr(self.invoice_form, 'save'):
            self.invoice_form.save()
        self.order.log_action(
            'pretix.event.order.modified', {
                'invoice_data':
                self.invoice_form.cleaned_data,
                'data': [{
                    k: (f.cleaned_data.get(k).name if isinstance(
                        f.cleaned_data.get(k), File) else
                        f.cleaned_data.get(k))
                    for k in f.changed_data
                } for f in self.forms]
            })
        order_modified.send(sender=self.request.event, order=self.order)
        if self.invoice_form.has_changed():
            success_message = (
                'Your invoice address has been updated. Please contact us if you need us '
                'to regenerate your invoice.')
            messages.success(self.request, _(success_message))

        invalidate_cache.apply_async(kwargs={
            'event': self.request.event.pk,
            'order': self.order.pk
        })
        CachedTicket.objects.filter(order_position__order=self.order).delete()
        CachedCombinedTicket.objects.filter(order=self.order).delete()
        return redirect(self.get_order_url())
コード例 #3
0
    def post(self, request, *args, **kwargs):
        failed = not self.save() or not self.invoice_form.is_valid()
        if failed:
            messages.error(self.request,
                           _("We had difficulties processing your input. Please review the errors below."))
            return self.get(request, *args, **kwargs)
        if hasattr(self.invoice_form, 'save'):
            self.invoice_form.save()
        self.order.log_action('pretix.event.order.modified', {
            'invoice_data': self.invoice_form.cleaned_data,
            'data': [{
                k: (f.cleaned_data.get(k).name
                    if isinstance(f.cleaned_data.get(k), File)
                    else f.cleaned_data.get(k))
                for k in f.changed_data
            } for f in self.forms]
        })
        order_modified.send(sender=self.request.event, order=self.order)
        if request.GET.get('generate_invoice') == 'true':
            if not can_generate_invoice(self.request.event, self.order):
                messages.error(self.request, _('You cannot generate an invoice for this order.'))
            elif self.order.invoices.exists():
                messages.error(self.request, _('An invoice for this order already exists.'))
            else:
                i = generate_invoice(self.order)
                self.order.log_action('pretix.event.order.invoice.generated', data={
                    'invoice': i.pk
                })
                messages.success(self.request, _('The invoice has been generated.'))

        invalidate_cache.apply_async(kwargs={'event': self.request.event.pk, 'order': self.order.pk})
        CachedTicket.objects.filter(order_position__order=self.order).delete()
        CachedCombinedTicket.objects.filter(order=self.order).delete()
        return redirect(self.get_order_url())
コード例 #4
0
 def save_background(self, f: CachedFile):
     if self.layout.background:
         self.layout.background.delete()
     self.layout.background.save('background.pdf', f.file)
     invalidate_cache.apply_async(kwargs={
         'event': self.request.event.pk,
         'provider': 'pdf'
     })
コード例 #5
0
 def save_layout(self):
     self.layout.layout = self.request.POST.get("data")
     self.layout.save(update_fields=['layout'])
     self.layout.log_action(
         action='pretix.plugins.ticketoutputpdf.layout.changed',
         user=self.request.user,
         data={'layout': self.request.POST.get("data")})
     invalidate_cache.apply_async(kwargs={
         'event': self.request.event.pk,
         'provider': 'pdf'
     })
コード例 #6
0
    def form_valid(self, form):
        messages.success(self.request, _('Your changes have been saved.'))
        if form.has_changed() or any(f.has_changed()
                                     for f in self.plugin_forms):
            data = {k: form.cleaned_data.get(k) for k in form.changed_data}
            for f in self.plugin_forms:
                data.update({
                    k: (f.cleaned_data.get(k).name if isinstance(
                        f.cleaned_data.get(k), File) else
                        f.cleaned_data.get(k))
                    for k in f.changed_data
                })
            self.object.log_action('pretix.event.item.changed',
                                   user=self.request.user,
                                   data=data)
            invalidate_cache.apply_async(kwargs={
                'event': self.request.event.pk,
                'item': self.object.pk
            })
        for f in self.plugin_forms:
            f.save()

        for k, v in self.formsets.items():
            if k == 'variations':
                self.save_formset('variations',
                                  'variation',
                                  serializer=ItemVariationSerializer,
                                  rm_verb='deleted')
            elif k == 'addons':
                self.save_formset('addons',
                                  'addons',
                                  'base_item',
                                  serializer=ItemAddOnSerializer)
            elif k == 'bundles':
                self.save_formset('bundles',
                                  'bundles',
                                  'base_item',
                                  order=False,
                                  serializer=ItemBundleSerializer)
            else:
                v.save()

        return super().form_valid(form)
コード例 #7
0
ファイル: item.py プロジェクト: bsod85/pretix
 def form_valid(self, form):
     messages.success(self.request, _('Your changes have been saved.'))
     if form.has_changed() or any(f.has_changed() for f in self.plugin_forms):
         data = {
             k: form.cleaned_data.get(k)
             for k in form.changed_data
         }
         for f in self.plugin_forms:
             data.update({
                 k: (f.cleaned_data.get(k).name
                     if isinstance(f.cleaned_data.get(k), File)
                     else f.cleaned_data.get(k))
                 for k in f.changed_data
             })
         self.object.log_action(
             'pretix.event.item.changed', user=self.request.user, data=data
         )
         invalidate_cache.apply_async(kwargs={'event': self.request.event.pk, 'item': self.object.pk})
     for f in self.plugin_forms:
         f.save()
     return super().form_valid(form)
コード例 #8
0
 def form_valid(self, form):
     messages.success(self.request, _('Your changes have been saved.'))
     if form.has_changed() or any(f.has_changed() for f in self.plugin_forms):
         data = {
             k: form.cleaned_data.get(k)
             for k in form.changed_data
         }
         for f in self.plugin_forms:
             data.update({
                 k: (f.cleaned_data.get(k).name
                     if isinstance(f.cleaned_data.get(k), File)
                     else f.cleaned_data.get(k))
                 for k in f.changed_data
             })
         self.object.log_action(
             'pretix.event.item.changed', user=self.request.user, data=data
         )
         invalidate_cache.apply_async(kwargs={'event': self.request.event.pk, 'item': self.object.pk})
     for f in self.plugin_forms:
         f.save()
     return super().form_valid(form)
コード例 #9
0
 def save_layout(self):
     super().save_layout()
     invalidate_cache.apply_async(kwargs={
         'event': self.request.event.pk,
         'provider': 'pdf'
     })