From 693965af28b792aa4011ddb93301cfde96c7da51 Mon Sep 17 00:00:00 2001 From: Raphael Michel Date: Sat, 11 Aug 2018 12:52:46 +0200 Subject: [PATCH] Add signal html_page_start --- src/pretix/base/templatetags/eventsignal.py | 19 +++++++++++++++++++ src/pretix/control/signals.py | 10 ++++++++++ .../control/templates/pretixcontrol/base.html | 2 ++ 3 files changed, 31 insertions(+) diff --git a/src/pretix/base/templatetags/eventsignal.py b/src/pretix/base/templatetags/eventsignal.py index 05462c1dcc..d6fa972a24 100644 --- a/src/pretix/base/templatetags/eventsignal.py +++ b/src/pretix/base/templatetags/eventsignal.py @@ -25,3 +25,22 @@ def eventsignal(event: Event, signame: str, **kwargs): if response: _html.append(response) return mark_safe("".join(_html)) + + +@register.simple_tag +def signal(signame: str, request, **kwargs): + """ + Send a signal and return the concatenated return values of all responses. + + Usage:: + + {% signal request "path.to.signal" argument="value" ... %} + """ + sigstr = signame.rsplit('.', 1) + sigmod = importlib.import_module(sigstr[0]) + signal = getattr(sigmod, sigstr[1]) + _html = [] + for receiver, response in signal.send(request, **kwargs): + if response: + _html.append(response) + return mark_safe("".join(_html)) diff --git a/src/pretix/control/signals.py b/src/pretix/control/signals.py index c6d7761c50..519cdc586d 100644 --- a/src/pretix/control/signals.py +++ b/src/pretix/control/signals.py @@ -12,6 +12,16 @@ This signal is sent out to build configuration forms for all restriction formset As with all plugin signals, the ``sender`` keyword argument will contain the event. """ +html_page_start = Signal( + providing_args=[] +) +""" +This signal allows you to put code in the beginning of the main page for every +page in the backend. You are expected to return HTML. + +The ``sender`` keyword argument will contain the request. +""" + html_head = EventPluginSignal( providing_args=["request"] ) diff --git a/src/pretix/control/templates/pretixcontrol/base.html b/src/pretix/control/templates/pretixcontrol/base.html index 2f8de68fd2..1716c91eb5 100644 --- a/src/pretix/control/templates/pretixcontrol/base.html +++ b/src/pretix/control/templates/pretixcontrol/base.html @@ -3,6 +3,7 @@ {% load i18n %} {% load hijack_tags %} {% load statici18n %} +{% load eventsignal %} {% load eventurl %} @@ -329,6 +330,7 @@ {% endif %}
+ {% signal "pretix.control.signals.html_page_start" request %} {% if messages %} {% for message in messages %}