From 0663bb902e75a3b030da7135af26acf789e2ecd0 Mon Sep 17 00:00:00 2001 From: Raphael Michel Date: Mon, 15 Aug 2016 15:33:59 +0200 Subject: [PATCH] Fixed a problem with plugin URL reversal It turns out that django does not support multiple include() statements that define the same namespace (only the first one will be used). But there isn't a problem that can't be solved with another level of indirection ;) --- src/pretix/multidomain/maindomain_urlconf.py | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/pretix/multidomain/maindomain_urlconf.py b/src/pretix/multidomain/maindomain_urlconf.py index 48c0ec0177..d95227be59 100644 --- a/src/pretix/multidomain/maindomain_urlconf.py +++ b/src/pretix/multidomain/maindomain_urlconf.py @@ -23,14 +23,15 @@ for app in apps.get_app_configs(): if hasattr(app, 'PretixPluginMeta'): if importlib.util.find_spec(app.name + '.urls'): urlmod = importlib.import_module(app.name + '.urls') + single_plugin_patterns = [] if hasattr(urlmod, 'urlpatterns'): - raw_plugin_patterns.append( - url(r'', include(urlmod, namespace=app.label)) - ) + single_plugin_patterns += urlmod.urlpatterns if hasattr(urlmod, 'event_patterns'): - raw_plugin_patterns.append( - url(r'^(?P[^/]+)/(?P[^/]+)/', include(urlmod.event_patterns, namespace=app.label)) - ) + single_plugin_patterns.append(url(r'^(?P[^/]+)/(?P[^/]+)/', + include(urlmod.event_patterns))) + raw_plugin_patterns.append( + url(r'', include(single_plugin_patterns, namespace=app.label)) + ) elif importlib.util.find_spec(app.name + '.maindomain_urls'): warnings.warn('Please put your config in an \'urls\' module using the urlpatterns and event_patterns ' 'attribute. Support for maindomain_urls in plugins will be dropped in the future.',