From 33682e1b382cddaa3fb4c0110119e0e6e4df3bcf Mon Sep 17 00:00:00 2001 From: Raphael Michel Date: Mon, 13 Jul 2020 15:56:55 +0200 Subject: [PATCH] Fix incorrect preview/history of subject rendering --- src/pretix/base/models/orders.py | 3 ++- src/pretix/control/views/orders.py | 7 +++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/pretix/base/models/orders.py b/src/pretix/base/models/orders.py index cba2124c15..b0faf10435 100644 --- a/src/pretix/base/models/orders.py +++ b/src/pretix/base/models/orders.py @@ -795,7 +795,7 @@ class Order(LockModel, LoggedModel): only be attached for this position and child positions, the link will only point to the position and the attendee email will be used if available. """ - from pretix.base.services.mail import SendMailException, mail, render_mail + from pretix.base.services.mail import SendMailException, mail, render_mail, TolerantDict if not self.email: return @@ -810,6 +810,7 @@ class Order(LockModel, LoggedModel): try: email_content = render_mail(template, context) + subject = subject.format_map(TolerantDict(context)) mail( recipient, subject, template, context, self.event, self.locale, self, headers=headers, sender=sender, diff --git a/src/pretix/control/views/orders.py b/src/pretix/control/views/orders.py index 6338e5fe07..fc7a264368 100644 --- a/src/pretix/control/views/orders.py +++ b/src/pretix/control/views/orders.py @@ -55,7 +55,9 @@ from pretix.base.services.invoices import ( invoice_qualified, regenerate_invoice, ) from pretix.base.services.locking import LockTimeoutException -from pretix.base.services.mail import SendMailException, render_mail +from pretix.base.services.mail import ( + SendMailException, TolerantDict, render_mail, +) from pretix.base.services.orders import ( OrderChangeManager, OrderError, approve_order, cancel_order, deny_order, extend_order, mark_order_expired, mark_order_refunded, @@ -1742,10 +1744,11 @@ class OrderSendMail(EventPermissionRequiredMixin, OrderViewMixin, FormView): with language(order.locale): email_context = get_email_context(event=order.event, order=order) email_template = LazyI18nString(form.cleaned_data['message']) + email_subject = str(form.cleaned_data['subject']).format_map(TolerantDict(email_context)) email_content = render_mail(email_template, email_context) if self.request.POST.get('action') == 'preview': self.preview_output = { - 'subject': _('Subject: {subject}').format(subject=form.cleaned_data['subject']), + 'subject': _('Subject: {subject}').format(subject=email_subject), 'html': markdown_compile_email(email_content) } return self.get(self.request, *self.args, **self.kwargs)