From ca12cbb69ee69d9580adc2ded298cf5dee728b5e Mon Sep 17 00:00:00 2001 From: Richard Schreiber Date: Fri, 25 Apr 2025 12:17:33 +0200 Subject: [PATCH] Fix checkbox-labels always containing text "required" although not being required --- src/pretix/presale/forms/renderers.py | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/src/pretix/presale/forms/renderers.py b/src/pretix/presale/forms/renderers.py index 891f240420..9c177197c1 100644 --- a/src/pretix/presale/forms/renderers.py +++ b/src/pretix/presale/forms/renderers.py @@ -60,8 +60,8 @@ def render_label(content, label_for=None, label_class=None, label_title='', labe # => remove for-attribute as well as "required"-text appended to label if 'for' in attrs: del attrs['for'] - else: - opt += ', {}'.format(pgettext('form', 'required')) if not optional else '' + elif not optional: + opt += ', {}'.format(pgettext('form', 'required')) builder = '<{tag}{attrs}>{content}{opt}' return format_html( @@ -155,17 +155,28 @@ class CheckoutFieldRenderer(FieldRenderer): label_class=self.get_label_class(), label_id=label_id, attrs=attrs, - optional=not required and not isinstance(self.widget, CheckboxInput), + optional=not required, is_valid=is_valid ) + html return html def put_inside_label(self, html): content = "{field} {label}".format(field=html, label=self.label) + + if hasattr(self.field.field, '_show_required'): + # e.g. payment settings forms where a field is only required if the payment provider is active + required = self.field.field._show_required + elif hasattr(self.field.field, '_required'): + # e.g. payment settings forms where a field is only required if the payment provider is active + required = self.field.field._required + else: + required = self.field.field.required + return render_label( content=mark_safe(content), label_for=self.field.id_for_label, label_title=escape(strip_tags(self.field_help)), + optional=not required, ) def wrap_label_and_field(self, html):