From af3be3d6c763223fa9664e01acd89a1081e5398e Mon Sep 17 00:00:00 2001 From: Richard Schreiber Date: Fri, 28 Nov 2025 15:27:34 +0100 Subject: [PATCH] update control media forms --- src/pretix/control/forms/organizer.py | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/src/pretix/control/forms/organizer.py b/src/pretix/control/forms/organizer.py index d0c48fc3d4..bf6be5675b 100644 --- a/src/pretix/control/forms/organizer.py +++ b/src/pretix/control/forms/organizer.py @@ -86,7 +86,7 @@ from pretix.control.forms import ExtFileField, SplitDateTimeField from pretix.control.forms.event import ( SafeEventMultipleChoiceField, multimail_validate, ) -from pretix.control.forms.widgets import Select2 +from pretix.control.forms.widgets import Select2, Select2Multiple from pretix.multidomain.models import KnownDomain from pretix.multidomain.urlreverse import build_absolute_uri @@ -249,6 +249,12 @@ class SafeOrderPositionChoiceField(forms.ModelChoiceField): return f'{op.order.code}-{op.positionid} ({str(op.item) + ((" - " + str(op.variation)) if op.variation else "")})' +class SafeOrderPositionMultipleChoiceField(forms.ModelMultipleChoiceField): + def __init__(self, queryset, **kwargs): + queryset = queryset.model.all.none() + super().__init__(queryset, **kwargs) + + class EventMetaPropertyForm(I18nModelForm): class Meta: model = EventMetaProperty @@ -963,12 +969,12 @@ class ReusableMediumUpdateForm(forms.ModelForm): class Meta: model = ReusableMedium - fields = ['active', 'expires', 'customer', 'linked_giftcard', 'linked_orderposition', 'notes'] + fields = ['active', 'expires', 'customer', 'linked_giftcard', 'linked_orderpositions', 'notes'] field_classes = { 'expires': SplitDateTimeField, 'customer': SafeModelChoiceField, 'linked_giftcard': SafeModelChoiceField, - 'linked_orderposition': SafeOrderPositionChoiceField, + 'linked_orderpositions': SafeOrderPositionMultipleChoiceField, } widgets = { 'expires': SplitDateTimePickerWidget, @@ -978,8 +984,8 @@ class ReusableMediumUpdateForm(forms.ModelForm): super().__init__(*args, **kwargs) organizer = self.instance.organizer - self.fields['linked_orderposition'].queryset = OrderPosition.all.filter(order__event__organizer=organizer).all() - self.fields['linked_orderposition'].widget = Select2( + self.fields['linked_orderpositions'].queryset = OrderPosition.all.filter(order__event__organizer=organizer).all() + self.fields['linked_orderpositions'].widget = Select2Multiple( attrs={ 'data-model-select2': 'generic', 'data-select2-url': reverse('control:organizer.ticket_select2', kwargs={ @@ -987,8 +993,8 @@ class ReusableMediumUpdateForm(forms.ModelForm): }), } ) - self.fields['linked_orderposition'].widget.choices = self.fields['linked_orderposition'].choices - self.fields['linked_orderposition'].required = False + self.fields['linked_orderpositions'].widget.choices = self.fields['linked_orderpositions'].choices + self.fields['linked_orderpositions'].required = False self.fields['linked_giftcard'].queryset = organizer.issued_gift_cards.all() self.fields['linked_giftcard'].widget = Select2( @@ -1042,12 +1048,12 @@ class ReusableMediumCreateForm(ReusableMediumUpdateForm): class Meta: model = ReusableMedium - fields = ['active', 'type', 'identifier', 'expires', 'linked_orderposition', 'linked_giftcard', 'customer', 'notes'] + fields = ['active', 'type', 'identifier', 'expires', 'linked_orderpositions', 'linked_giftcard', 'customer', 'notes'] field_classes = { 'expires': SplitDateTimeField, 'customer': SafeModelChoiceField, 'linked_giftcard': SafeModelChoiceField, - 'linked_orderposition': SafeOrderPositionChoiceField, + 'linked_orderpositions': SafeOrderPositionMultipleChoiceField, } widgets = { 'expires': SplitDateTimePickerWidget,