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