Allow to disable plugins system-wide

This commit is contained in:
Raphael Michel
2018-08-19 15:12:58 +02:00
parent 625ef3da8a
commit 0e1159b01e
4 changed files with 10 additions and 1 deletions

View File

@@ -2,6 +2,7 @@ from enum import Enum
from typing import List
from django.apps import apps
from django.conf import settings
class PluginType(Enum):
@@ -26,5 +27,7 @@ def get_all_plugins() -> List[type]:
meta = app.PretixPluginMeta
meta.module = app.name
meta.app = app
if app.name in settings.PRETIX_PLUGINS_EXCLUDE:
continue
plugins.append(meta)
return plugins

View File

@@ -42,7 +42,8 @@ class EventPluginSignal(django.dispatch.Signal):
searchpath, _ = searchpath.rsplit(".", 1)
# Only fire receivers from active plugins and core modules
if core_module or (sender and app and app.name in sender.get_plugins()):
excluded = settings.PRETIX_PLUGINS_EXCLUDE
if core_module or (sender and app and app.name in sender.get_plugins() and app.name not in excluded):
if not hasattr(app, 'compatibility_errors') or not app.compatibility_errors:
return True
return False

View File

@@ -99,6 +99,7 @@ CSRF_TRUSTED_ORIGINS = [urlparse(SITE_URL).hostname]
PRETIX_PLUGINS_DEFAULT = config.get('pretix', 'plugins_default',
fallback='pretix.plugins.sendmail,pretix.plugins.statistics,pretix.plugins.checkinlists')
PRETIX_PLUGINS_EXCLUDE = config.get('pretix', 'plugins_exclude', fallback='').split(',')
FETCH_ECB_RATES = config.getboolean('pretix', 'ecb_rates', fallback=True)