Email preview: Include prefix in subject (#4395)

This commit is contained in:
Raphael Michel
2024-08-23 13:42:29 +02:00
committed by GitHub
parent a6f93b6cf0
commit 6087665775
6 changed files with 48 additions and 18 deletions

View File

@@ -98,6 +98,7 @@ from ...base.i18n import language
from ...base.models.items import (
Item, ItemCategory, ItemMetaProperty, Question, Quota,
)
from ...base.services.mail import prefix_subject
from ...base.settings import LazyI18nStringList
from ...helpers.compat import CompatDeleteView
from ...helpers.format import format_map
@@ -746,9 +747,9 @@ class MailSettingsPreview(EventPermissionRequiredMixin, View):
with language(self.supported_locale[idx], self.request.event.settings.region):
try:
if k.startswith('mail_subject_'):
msgs[self.supported_locale[idx]] = format_map(
msgs[self.supported_locale[idx]] = prefix_subject(self.request.event, format_map(
bleach.clean(v), self.placeholders(preview_item), raise_on_missing=True
)
), highlight=True)
else:
msgs[self.supported_locale[idx]] = markdown_compile_email(
format_map(v, self.placeholders(preview_item), raise_on_missing=True)

View File

@@ -62,8 +62,9 @@ from django.urls import reverse
from django.utils import formats
from django.utils.formats import date_format, get_format
from django.utils.functional import cached_property
from django.utils.html import conditional_escape
from django.utils.html import conditional_escape, escape
from django.utils.http import url_has_allowed_host_and_scheme
from django.utils.safestring import mark_safe
from django.utils.timezone import make_aware, now
from django.utils.translation import gettext, gettext_lazy as _, ngettext
from django.views.generic import (
@@ -94,7 +95,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, prefix_subject, render_mail,
)
from pretix.base.services.orders import (
OrderChangeManager, OrderError, approve_order, cancel_order, deny_order,
extend_order, mark_order_expired, mark_order_refunded,
@@ -2304,7 +2307,9 @@ class OrderSendMail(EventPermissionRequiredMixin, OrderViewMixin, FormView):
email_content = render_mail(email_template, email_context)
if self.request.POST.get('action') == 'preview':
self.preview_output = {
'subject': _('Subject: {subject}').format(subject=email_subject),
'subject': mark_safe(_('Subject: {subject}').format(
subject=prefix_subject(order.event, escape(email_subject), highlight=True)
)),
'html': markdown_compile_email(email_content)
}
return self.get(self.request, *self.args, **self.kwargs)
@@ -2369,7 +2374,9 @@ class OrderPositionSendMail(OrderSendMail):
email_content = render_mail(email_template, email_context)
if self.request.POST.get('action') == 'preview':
self.preview_output = {
'subject': _('Subject: {subject}').format(subject=email_subject),
'subject': mark_safe(_('Subject: {subject}').format(
subject=prefix_subject(position.order.event, escape(email_subject), highlight=True))
),
'html': markdown_compile_email(email_content)
}
return self.get(self.request, *self.args, **self.kwargs)

View File

@@ -90,7 +90,7 @@ from pretix.base.models.orders import CancellationRequest
from pretix.base.models.organizer import SalesChannel, TeamAPIToken
from pretix.base.payment import PaymentException
from pretix.base.services.export import multiexport, scheduled_organizer_export
from pretix.base.services.mail import SendMailException, mail
from pretix.base.services.mail import SendMailException, mail, prefix_subject
from pretix.base.signals import register_multievent_data_exporters
from pretix.base.templatetags.rich_text import markdown_compile_email
from pretix.base.views.tasks import AsyncAction
@@ -351,8 +351,11 @@ class MailSettingsPreview(OrganizerPermissionRequiredMixin, View):
if idx in self.supported_locale:
with language(self.supported_locale[idx], self.request.organizer.settings.region):
if k.startswith('mail_subject_'):
msgs[self.supported_locale[idx]] = format_map(bleach.clean(v),
self.placeholders(preview_item))
msgs[self.supported_locale[idx]] = prefix_subject(
self.request.organizer,
format_map(bleach.clean(v), self.placeholders(preview_item)),
highlight=True,
)
else:
msgs[self.supported_locale[idx]] = markdown_compile_email(
format_map(v, self.placeholders(preview_item))

View File

@@ -64,6 +64,7 @@ from pretix.base.models import (
CartPosition, LogEntry, Voucher, WaitingListEntry,
)
from pretix.base.models.vouchers import generate_codes
from pretix.base.services.mail import prefix_subject
from pretix.base.services.vouchers import vouchers_send
from pretix.base.templatetags.rich_text import markdown_compile_email
from pretix.base.views.tasks import AsyncFormView
@@ -572,7 +573,11 @@ class VoucherBulkMailPreview(EventPermissionRequiredMixin, View):
return HttpResponseBadRequest(_('invalid item'))
msgs = {}
if "subject" in preview_item:
msgs["all"] = format_map(bleach.clean(request.POST.get(preview_item, "")), self.placeholders(preview_item))
msgs["all"] = prefix_subject(
self.request.event,
format_map(bleach.clean(request.POST.get(preview_item, "")), self.placeholders(preview_item)),
highlight=True
)
else:
msgs["all"] = markdown_compile_email(
format_map(request.POST.get(preview_item), self.placeholders(preview_item))