ItemUpdate: Save a few DB queries

This commit is contained in:
Raphael Michel
2021-05-21 17:29:41 +02:00
parent 5d5601a8bb
commit 1439594806
3 changed files with 11 additions and 2 deletions

View File

@@ -41,6 +41,7 @@ class TicketLayoutItemForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
self.event = kwargs.pop('event')
self.sales_channel = kwargs.pop('sales_channel')
queryset = kwargs.pop('queryset')
super().__init__(*args, **kwargs)
if self.sales_channel.identifier != 'web':
self.fields['layout'].label = _('PDF ticket layout for {channel}').format(
@@ -50,7 +51,7 @@ class TicketLayoutItemForm(forms.ModelForm):
else:
self.fields['layout'].label = _('PDF ticket layout')
self.fields['layout'].empty_label = _('(Event default)')
self.fields['layout'].queryset = self.event.ticket_layouts.all()
self.fields['layout'].queryset = queryset
self.fields['layout'].required = False
def save(self, commit=True):

View File

@@ -64,6 +64,7 @@ def register_multievent_data(sender, **kwargs):
@receiver(item_forms, dispatch_uid="pretix_ticketoutputpdf_item_forms")
def control_item_forms(sender, request, item, **kwargs):
forms = []
queryset = sender.ticket_layouts.all()
for k, v in sorted(list(get_all_sales_channels().items()), key=lambda a: (int(a[0] != 'web'), a[0])):
try:
inst = TicketLayoutItem.objects.get(item=item, sales_channel=k)
@@ -73,6 +74,7 @@ def control_item_forms(sender, request, item, **kwargs):
instance=inst,
event=sender,
sales_channel=v,
queryset=queryset,
data=(request.POST if request.method == "POST" else None),
prefix="ticketlayoutitem_{}".format(k)
))