forked from ungleich-public/dynamicweb
52 lines
1.6 KiB
Python
52 lines
1.6 KiB
Python
|
|
from django.conf import settings
|
|
from django.urls import URLResolver, include, path, re_path
|
|
from django.urls.resolvers import RegexPattern
|
|
from django.utils.functional import cached_property
|
|
|
|
from cms import views
|
|
from cms.constants import SLUG_REGEXP
|
|
|
|
if settings.APPEND_SLASH:
|
|
regexp = r'^(?P<slug>%s)/$' % SLUG_REGEXP
|
|
else:
|
|
regexp = r'^(?P<slug>%s)$' % SLUG_REGEXP
|
|
|
|
|
|
def _get_apphook_urlpatterns():
|
|
# Avoid touching the DB / apphooks at import time.
|
|
from cms.apphook_pool import apphook_pool
|
|
|
|
if not apphook_pool.get_apphooks():
|
|
return []
|
|
|
|
from cms.appresolver import get_app_patterns
|
|
|
|
return get_app_patterns()
|
|
|
|
|
|
class LazyURLResolver(URLResolver):
|
|
def __init__(self, *args, get_urlpatterns, **kwargs):
|
|
self._get_urlpatterns = get_urlpatterns
|
|
super().__init__(*args, **kwargs)
|
|
|
|
@property
|
|
def urlconf_module(self):
|
|
# Django allows urlconf_module to be a list of URLPattern/URLResolver.
|
|
return self.url_patterns
|
|
|
|
@cached_property
|
|
def url_patterns(self):
|
|
patterns = self._get_urlpatterns() or []
|
|
return list(patterns)
|
|
|
|
|
|
urlpatterns = [
|
|
# If there are some application urls, use special resolver,
|
|
# so we will have standard reverse support.
|
|
LazyURLResolver(RegexPattern(r''), 'app_resolver', get_urlpatterns=_get_apphook_urlpatterns),
|
|
path('cms_login/', views.login, name='cms_login'),
|
|
path('cms_wizard/', include('cms.wizards.urls')),
|
|
re_path(regexp, views.details, name='pages-details-by-slug'),
|
|
path('', views.details, {'slug': ''}, name='pages-root'),
|
|
]
|