From ba678de43a4742ad595ff565b81affd18201f144 Mon Sep 17 00:00:00 2001 From: Raphael Michel Date: Tue, 16 Feb 2016 20:50:39 +0100 Subject: [PATCH] Plugin URL hooks for maindomain/subdomain --- src/pretix/multidomain/maindomain_urlconf.py | 19 ++++++++++++++++++- src/pretix/multidomain/subdomain_urlconf.py | 19 ++++++++++++++++++- 2 files changed, 36 insertions(+), 2 deletions(-) diff --git a/src/pretix/multidomain/maindomain_urlconf.py b/src/pretix/multidomain/maindomain_urlconf.py index a83e73044c..a19a62434d 100644 --- a/src/pretix/multidomain/maindomain_urlconf.py +++ b/src/pretix/multidomain/maindomain_urlconf.py @@ -1,3 +1,7 @@ +import importlib +import importlib.util + +from django.apps import apps from django.conf.urls import include, url from django.views.generic import TemplateView @@ -14,5 +18,18 @@ presale_patterns_main = [ ], namespace='presale')) ] +raw_plugin_patterns = [] +for app in apps.get_app_configs(): + if hasattr(app, 'PretixPluginMeta'): + if importlib.util.find_spec(app.name + '.maindomain_urls'): + urlmod = importlib.import_module(app.name + '.maindomain_urls') + raw_plugin_patterns.append( + url(r'', include(urlmod, namespace=app.label)) + ) + +plugin_patterns = [ + url(r'', include(raw_plugin_patterns, namespace='plugins')) +] + # The presale namespace comes last, because it contains a wildcard catch -urlpatterns = common_patterns + presale_patterns_main +urlpatterns = common_patterns + plugin_patterns + presale_patterns_main diff --git a/src/pretix/multidomain/subdomain_urlconf.py b/src/pretix/multidomain/subdomain_urlconf.py index 55f3b1bf5e..2ba11f00bc 100644 --- a/src/pretix/multidomain/subdomain_urlconf.py +++ b/src/pretix/multidomain/subdomain_urlconf.py @@ -1,3 +1,7 @@ +import importlib +import importlib.util + +from django.apps import apps from django.conf.urls import include, url from pretix.presale.urls import ( @@ -12,5 +16,18 @@ presale_patterns = [ ], namespace='presale')) ] +raw_plugin_patterns = [] +for app in apps.get_app_configs(): + if hasattr(app, 'PretixPluginMeta'): + if importlib.util.find_spec(app.name + '.subdomain_urls'): + urlmod = importlib.import_module(app.name + '.subdomain_urls') + raw_plugin_patterns.append( + url(r'', include(urlmod, namespace=app.label)) + ) + +plugin_patterns = [ + url(r'', include(raw_plugin_patterns, namespace='plugins')) +] + # The presale namespace comes last, because it contains a wildcard catch -urlpatterns = common_patterns + presale_patterns +urlpatterns = common_patterns + plugin_patterns + presale_patterns