E-mail content: insert placeholder into text on click

This commit is contained in:
Richard Schreiber
2023-09-14 10:32:22 +02:00
committed by GitHub
parent 66ae5d1af2
commit af3100a354
9 changed files with 85 additions and 58 deletions

View File

@@ -44,7 +44,7 @@ from i18nfield.forms import I18nFormField, I18nTextarea, I18nTextInput
from pretix.base.email import get_available_placeholders
from pretix.base.forms import I18nModelForm, PlaceholderValidator
from pretix.base.forms.widgets import (
SplitDateTimePickerWidget, TimePickerWidget,
SplitDateTimePickerWidget, TimePickerWidget, format_placeholders_help_text,
)
from pretix.base.models import CheckinList, Item, Order, SubEvent
from pretix.control.forms import CachedFileField, SplitDateTimeField
@@ -54,19 +54,14 @@ from pretix.plugins.sendmail.models import Rule
class FormPlaceholderMixin:
def _set_field_placeholders(self, fn, base_parameters):
phs = [
'{%s}' % p
for p in sorted(get_available_placeholders(self.event, base_parameters).keys())
]
ht = _('Available placeholders: {list}').format(
list=', '.join(phs)
)
placeholders = get_available_placeholders(self.event, base_parameters)
ht = format_placeholders_help_text(placeholders, self.event)
if self.fields[fn].help_text:
self.fields[fn].help_text += ' ' + str(ht)
else:
self.fields[fn].help_text = ht
self.fields[fn].validators.append(
PlaceholderValidator(phs)
PlaceholderValidator(['{%s}' % p for p in placeholders.keys()])
)