mirror of
https://github.com/pretix/pretix.git
synced 2026-05-04 15:04:03 +00:00
Placeholders in subject were not being replaced because there was no `.format()` called on the subject. This commit creates a context dict that is used for both the body and the subject. It is then replaced using `.format_map()` Fixes https://github.com/pretix/pretix/issues/531
This commit is contained in:
committed by
Raphael Michel
parent
96dd4e02f3
commit
58938fc07c
@@ -23,7 +23,11 @@ class MailForm(forms.Form):
|
||||
super().__init__(*args, **kwargs)
|
||||
self.fields['subject'] = I18nFormField(
|
||||
widget=I18nTextInput, required=True,
|
||||
locales=event.settings.get('locales')
|
||||
locales=event.settings.get('locales'),
|
||||
help_text=_("Available placeholders: {expire_date}, {event}, {code}, {date}, {url}, "
|
||||
"{invoice_name}, {invoice_company}"),
|
||||
validators=[PlaceholderValidator(['{expire_date}', '{event}', '{code}', '{date}', '{url}',
|
||||
'{invoice_name}', '{invoice_company}'])]
|
||||
)
|
||||
self.fields['message'] = I18nFormField(
|
||||
widget=I18nTextarea, required=True,
|
||||
|
||||
@@ -78,24 +78,33 @@ class SenderView(EventPermissionRequiredMixin, FormView):
|
||||
|
||||
if self.request.POST.get("action") == "preview":
|
||||
for l in self.request.event.settings.locales:
|
||||
|
||||
with language(l):
|
||||
self.output[l] = []
|
||||
self.output[l].append(
|
||||
_('Subject: {subject}').format(subject=form.cleaned_data['subject'].localize(l)))
|
||||
message = form.cleaned_data['message'].localize(l)
|
||||
preview_text = message.format(
|
||||
code='ORDER1234',
|
||||
event=self.request.event.name,
|
||||
date=date_format(now(), 'SHORT_DATE_FORMAT'),
|
||||
expire_date=date_format(now() + timedelta(days=7), 'SHORT_DATE_FORMAT'),
|
||||
url=build_absolute_uri(self.request.event, 'presale:event.order', kwargs={
|
||||
|
||||
context_dict = {
|
||||
'code': 'ORDER1234',
|
||||
'event': self.request.event.name,
|
||||
'date': date_format(now(), 'SHORT_DATE_FORMAT'),
|
||||
'expire_date': date_format(now() + timedelta(days=7), 'SHORT_DATE_FORMAT'),
|
||||
'url': build_absolute_uri(self.request.event, 'presale:event.order', kwargs={
|
||||
'order': 'ORDER1234',
|
||||
'secret': 'longrandomsecretabcdef123456'
|
||||
}),
|
||||
invoice_name=_('John Doe'),
|
||||
invoice_company=_('Sample Company LLC'),
|
||||
)
|
||||
'invoice_name': _('John Doe'),
|
||||
'invoice_company': _('Sample Company LLC')
|
||||
}
|
||||
|
||||
self.output[l] = []
|
||||
|
||||
subject = form.cleaned_data['subject'].localize(l)
|
||||
preview_subject = subject.format_map(context_dict)
|
||||
self.output[l].append(
|
||||
_('Subject: {subject}').format(subject=preview_subject))
|
||||
|
||||
message = form.cleaned_data['message'].localize(l)
|
||||
preview_text = message.format_map(context_dict)
|
||||
self.output[l].append(preview_text)
|
||||
|
||||
return self.get(self.request, *self.args, **self.kwargs)
|
||||
|
||||
for o in orders:
|
||||
|
||||
Reference in New Issue
Block a user