Organizer-level plugins (#5305)

* Add version notes to the docs

* Adapt signal handling

* Add UI

* Add API

* API and tests

* Fix registry

* Update doc/development/api/plugins.rst

Co-authored-by: Felix Rindt <felix@rindt.me>

* Fix failing tests

* Apply suggestions from code review

Co-authored-by: Richard Schreiber <schreiber@rami.io>

* Update src/pretix/control/templates/pretixcontrol/organizers/plugin_events.html

Co-authored-by: luelista <weller@rami.io>

* Update src/pretix/control/templates/pretixcontrol/organizers/plugins.html

Co-authored-by: luelista <weller@rami.io>

* Update src/pretix/control/templates/pretixcontrol/organizers/plugins.html

Co-authored-by: luelista <weller@rami.io>

* Update src/pretix/control/navigation.py

Co-authored-by: luelista <weller@rami.io>

* Update src/pretix/control/urls.py

Co-authored-by: luelista <weller@rami.io>

* Apply suggestion from @wiffbi

* REbase migration

* Fix review note

* Fix test cases

* Remove plugin from all events if disabled on org level

* Update doc/development/api/plugins.rst

* Unify registries

* Rebase migration

---------

Co-authored-by: Felix Rindt <felix@rindt.me>
Co-authored-by: Richard Schreiber <schreiber@rami.io>
Co-authored-by: luelista <weller@rami.io>
This commit is contained in:
Raphael Michel
2025-08-19 11:33:34 +02:00
committed by GitHub
parent 56964b6764
commit a51a6123f5
50 changed files with 1623 additions and 192 deletions

View File

@@ -31,12 +31,9 @@
# Unless required by applicable law or agreed to in writing, software distributed under the Apache License 2.0 is
# distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations under the License.
from pretix.base.signals import EventPluginSignal, GlobalSignal
from django.dispatch import Signal
from pretix.base.signals import EventPluginSignal
global_html_head = Signal()
global_html_head = GlobalSignal()
"""
Arguments: ``request``
@@ -47,7 +44,7 @@ of every page in the frontend. You will get the request as the keyword argument
This signal is called regardless of whether your plugin is active for all pages of the system.
"""
global_html_page_header = Signal()
global_html_page_header = GlobalSignal()
"""
Arguments: ``request``
@@ -58,7 +55,7 @@ of every page in the frontend. You will get the request as the keyword argument
This signal is called regardless of whether your plugin is active for all pages of the system.
"""
global_html_footer = Signal()
global_html_footer = GlobalSignal()
"""
Arguments: ``request``
@@ -134,7 +131,7 @@ are expected to return a dictionary containing the keys ``label`` and ``url``.
As with all plugin signals, the ``sender`` keyword argument will contain the event.
"""
global_footer_link = Signal()
global_footer_link = GlobalSignal()
"""
Arguments: ``request``