diff --git a/src/pretix/presale/forms/renderers.py b/src/pretix/presale/forms/renderers.py index f0ff35e75..e9ce48ccf 100644 --- a/src/pretix/presale/forms/renderers.py +++ b/src/pretix/presale/forms/renderers.py @@ -8,7 +8,7 @@ from django.utils.safestring import mark_safe from django.utils.translation import pgettext -def render_label(content, label_for=None, label_class=None, label_title='', optional=False): +def render_label(content, label_for=None, label_class=None, label_title='', optional=False, is_valid=None): """ Render a label with content """ @@ -20,6 +20,15 @@ def render_label(content, label_for=None, label_class=None, label_title='', opti if label_title: attrs['title'] = label_title + opt = "" + + if is_valid is not None: + if is_valid: + validation_text = pgettext('form', 'is valid') + else: + validation_text = pgettext('form', 'has errors') + opt += ' {}'.format(validation_text) + if text_value(content) == ' ': # Empty label, e.g. checkbox attrs.setdefault('class', '') @@ -27,16 +36,15 @@ def render_label(content, label_for=None, label_class=None, label_title='', opti # usually checkboxes have overall empty labels and special labels per checkbox # => remove for-attribute as well as "required"-text appended to label del(attrs['for']) - opt = "" else: - opt = mark_safe(' {}'.format(pgettext('form', 'required'))) if not optional else '' + opt += ', {}'.format(pgettext('form', 'required')) if not optional else '' builder = '<{tag}{attrs}>{content}{opt}{tag}>' return format_html( builder, tag='label', attrs=mark_safe(flatatt(attrs)) if attrs else '', - opt=opt, + opt=mark_safe(opt), content=text_value(content), ) @@ -64,6 +72,26 @@ class CheckoutFieldRenderer(FieldRenderer): ) return form_group_class + def append_to_field(self, html): + help_text_and_errors = [] + help_text_and_errors += self.field_errors + if self.field_help: + help_text_and_errors.append(self.field_help) + for idx, text in enumerate(help_text_and_errors): + html += '