From 1383e967dffd99d8a99cb41f483415093263a8f4 Mon Sep 17 00:00:00 2001 From: Raphael Michel Date: Wed, 25 Mar 2026 15:14:20 +0100 Subject: [PATCH] Hotfix font select in organizer --- src/pretix/base/settings.py | 2 +- src/pretix/control/forms/__init__.py | 6 ++++++ src/pretix/control/forms/event.py | 13 +++---------- 3 files changed, 10 insertions(+), 11 deletions(-) diff --git a/src/pretix/base/settings.py b/src/pretix/base/settings.py index d4245baeb..940f62192 100644 --- a/src/pretix/base/settings.py +++ b/src/pretix/base/settings.py @@ -100,7 +100,7 @@ def primary_font_kwargs(): choices = [('Open Sans', 'Open Sans')] choices += sorted([ - (a, {"title": a, "data": v}) for a, v in get_fonts(pdf_support_required=False).items() + (a, FontSelect.FontOption(title=a, data=v)) for a, v in get_fonts(pdf_support_required=False).items() ], key=lambda a: a[0]) return { 'choices': choices, diff --git a/src/pretix/control/forms/__init__.py b/src/pretix/control/forms/__init__.py index d72a0ca34..6f5fb6c08 100644 --- a/src/pretix/control/forms/__init__.py +++ b/src/pretix/control/forms/__init__.py @@ -34,6 +34,7 @@ import datetime import os +from dataclasses import dataclass from django import forms from django.conf import settings @@ -420,6 +421,11 @@ class SplitDateTimeField(forms.SplitDateTimeField): class FontSelect(forms.RadioSelect): option_template_name = 'pretixcontrol/font_option.html' + @dataclass + class FontOption: + title: str + data: str + class ItemMultipleChoiceField(SafeModelMultipleChoiceField): def label_from_instance(self, obj): diff --git a/src/pretix/control/forms/event.py b/src/pretix/control/forms/event.py index 3f171d9d8..6d672f204 100644 --- a/src/pretix/control/forms/event.py +++ b/src/pretix/control/forms/event.py @@ -34,7 +34,6 @@ # distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations under the License. -from dataclasses import dataclass from decimal import Decimal from urllib.parse import urlencode from zoneinfo import ZoneInfo @@ -74,8 +73,8 @@ from pretix.base.settings import ( ) from pretix.base.validators import multimail_validate from pretix.control.forms import ( - MultipleLanguagesWidget, SalesChannelCheckboxSelectMultiple, SlugWidget, - SplitDateTimeField, SplitDateTimePickerWidget, + FontSelect, MultipleLanguagesWidget, SalesChannelCheckboxSelectMultiple, + SlugWidget, SplitDateTimeField, SplitDateTimePickerWidget, ) from pretix.control.forms.widgets import Select2 from pretix.helpers.countries import CachedCountries @@ -579,12 +578,6 @@ class EventSettingsValidationMixin: del self.cleaned_data[field] -@dataclass -class FontOption: - title: str - data: str - - class EventSettingsForm(EventSettingsValidationMixin, FormPlaceholderMixin, SettingsForm): timezone = forms.ChoiceField( choices=((a, a) for a in common_timezones), @@ -736,7 +729,7 @@ class EventSettingsForm(EventSettingsValidationMixin, FormPlaceholderMixin, Sett del self.fields['event_list_filters'] del self.fields['event_calendar_future_only'] self.fields['primary_font'].choices = [('Open Sans', 'Open Sans')] + sorted([ - (a, FontOption(title=a, data=v)) for a, v in get_fonts(self.event, pdf_support_required=False).items() + (a, FontSelect.FontOption(title=a, data=v)) for a, v in get_fonts(self.event, pdf_support_required=False).items() ], key=lambda a: a[0]) # create "virtual" fields for better UX when editing _asked and _required fields