forked from CGM_Public/pretix_original
Fixed serialization issue
This commit is contained in:
@@ -68,6 +68,11 @@ class BaseExporter:
|
|||||||
|
|
||||||
:type form_data: dict
|
:type form_data: dict
|
||||||
:param form_data: The form data of the export details form
|
:param form_data: The form data of the export details form
|
||||||
|
|
||||||
|
Note: If you use a ``ModelChoiceField`` (or a ``ModelMultipleChoiceField``), the
|
||||||
|
``form_data`` will not contain the model instance but only it's primary key (or
|
||||||
|
a list of primary keys) for reasons of internal serialization when using background
|
||||||
|
tasks.
|
||||||
"""
|
"""
|
||||||
raise NotImplementedError() # NOQA
|
raise NotImplementedError() # NOQA
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,6 @@
|
|||||||
|
from django import forms
|
||||||
|
from django.db import models
|
||||||
|
|
||||||
from pretix.base.forms import I18nModelForm
|
from pretix.base.forms import I18nModelForm
|
||||||
from pretix.base.models import Order
|
from pretix.base.models import Order
|
||||||
|
|
||||||
@@ -6,3 +9,17 @@ class ExtendForm(I18nModelForm):
|
|||||||
class Meta:
|
class Meta:
|
||||||
model = Order
|
model = Order
|
||||||
fields = ['expires']
|
fields = ['expires']
|
||||||
|
|
||||||
|
|
||||||
|
class ExporterForm(forms.Form):
|
||||||
|
|
||||||
|
def clean(self):
|
||||||
|
data = super().clean()
|
||||||
|
|
||||||
|
for k, v in data.items():
|
||||||
|
if isinstance(v, models.Model):
|
||||||
|
data[k] = v.pk
|
||||||
|
elif isinstance(v, models.QuerySet):
|
||||||
|
data[k] = [m.pk for m in v]
|
||||||
|
|
||||||
|
return data
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ from pretix.base.signals import (
|
|||||||
register_data_exporters, register_payment_providers,
|
register_data_exporters, register_payment_providers,
|
||||||
register_ticket_outputs,
|
register_ticket_outputs,
|
||||||
)
|
)
|
||||||
from pretix.control.forms.orders import ExtendForm
|
from pretix.control.forms.orders import ExporterForm, ExtendForm
|
||||||
from pretix.control.permissions import EventPermissionRequiredMixin
|
from pretix.control.permissions import EventPermissionRequiredMixin
|
||||||
from pretix.multidomain.urlreverse import build_absolute_uri
|
from pretix.multidomain.urlreverse import build_absolute_uri
|
||||||
|
|
||||||
@@ -391,7 +391,7 @@ class ExportView(EventPermissionRequiredMixin, TemplateView):
|
|||||||
responses = register_data_exporters.send(self.request.event)
|
responses = register_data_exporters.send(self.request.event)
|
||||||
for receiver, response in responses:
|
for receiver, response in responses:
|
||||||
ex = response(self.request.event)
|
ex = response(self.request.event)
|
||||||
ex.form = forms.Form(
|
ex.form = ExporterForm(
|
||||||
data=(self.request.POST if self.request.method == 'POST' else None)
|
data=(self.request.POST if self.request.method == 'POST' else None)
|
||||||
)
|
)
|
||||||
ex.form.fields = ex.export_form_fields
|
ex.form.fields = ex.export_form_fields
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ from django import forms
|
|||||||
from django.utils.translation import ugettext as _
|
from django.utils.translation import ugettext as _
|
||||||
|
|
||||||
from pretix.base.exporter import BaseExporter
|
from pretix.base.exporter import BaseExporter
|
||||||
from pretix.base.models import Order, OrderPosition
|
from pretix.base.models import Order, OrderPosition, Question
|
||||||
|
|
||||||
|
|
||||||
class BaseCheckinList(BaseExporter):
|
class BaseCheckinList(BaseExporter):
|
||||||
@@ -65,9 +65,9 @@ class CSVCheckinList(BaseCheckinList):
|
|||||||
output = io.StringIO()
|
output = io.StringIO()
|
||||||
writer = csv.writer(output, quoting=csv.QUOTE_NONNUMERIC, delimiter=",")
|
writer = csv.writer(output, quoting=csv.QUOTE_NONNUMERIC, delimiter=",")
|
||||||
|
|
||||||
questions = list(form_data['questions'])
|
questions = list(Question.objects.filter(event=self.event, id__in=form_data['questions']))
|
||||||
qs = OrderPosition.objects.filter(
|
qs = OrderPosition.objects.filter(
|
||||||
order__event=self.event, item__in=form_data['items']
|
order__event=self.event, item_id__in=form_data['items']
|
||||||
).prefetch_related(
|
).prefetch_related(
|
||||||
'answers', 'answers__question'
|
'answers', 'answers__question'
|
||||||
).select_related('order', 'item', 'variation')
|
).select_related('order', 'item', 'variation')
|
||||||
|
|||||||
Reference in New Issue
Block a user