Allow template syntax in event text (Z#23140046) (#3815)

* remove duplicate context generation

* allow text templates in frontpage_text

* refactor: move placeholder functionality to separate file

* fix wrong class name, code style

* update year in license header

* undo license header update

* use new function name

* render only the placeholders that are actually used in the message

* refactoring

* add str(...) call

* Update doc/development/api/placeholder.rst

Co-authored-by: Raphael Michel <michel@rami.io>

* rename register_mail_placeholders to register_template_placeholders
(deprecate old name)

* isort

* add signals to docs

---------

Co-authored-by: Raphael Michel <michel@rami.io>
This commit is contained in:
Mira
2024-02-06 11:32:03 +01:00
committed by GitHub
parent 45ac391998
commit bac673f3ab
13 changed files with 654 additions and 582 deletions

View File

@@ -67,6 +67,7 @@ from pretix.base.models.event import Event, SubEvent
from pretix.base.models.items import (
ItemAddOn, ItemBundle, SubEventItem, SubEventItemVariation,
)
from pretix.base.services.placeholders import PlaceholderContext
from pretix.base.services.quotas import QuotaAvailability
from pretix.helpers.compat import date_fromisocalendar
from pretix.multidomain.urlreverse import eventreverse
@@ -590,10 +591,11 @@ class EventIndex(EventViewMixin, EventListMixin, CartMixin, TemplateView):
context['cart'] = self.get_cart()
context['has_addon_choices'] = any(cp.has_addon_choices for cp in get_cart(self.request))
templating_context = PlaceholderContext(event_or_subevent=self.subevent or self.request.event, event=self.request.event)
if self.subevent:
context['frontpage_text'] = str(self.subevent.frontpage_text)
context['frontpage_text'] = templating_context.format(str(self.subevent.frontpage_text))
else:
context['frontpage_text'] = str(self.request.event.settings.frontpage_text)
context['frontpage_text'] = templating_context.format(str(self.request.event.settings.frontpage_text))
if self.request.event.has_subevents:
context['subevent_list'] = SimpleLazyObject(self._subevent_list_context)