Skip to content

Commit

Permalink
Let CMS start with uninstalled apphook
Browse files Browse the repository at this point in the history
  • Loading branch information
mkoistinen committed Dec 28, 2015
1 parent f657075 commit c89c7d7
Show file tree
Hide file tree
Showing 5 changed files with 18 additions and 12 deletions.
4 changes: 3 additions & 1 deletion cms/apphook_pool.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
import warnings

from django.core.exceptions import ImproperlyConfigured
from django.utils.translation import ugettext as _

from cms.app_base import CMSApp
from cms.exceptions import AppAlreadyRegistered
Expand Down Expand Up @@ -100,7 +101,8 @@ def get_apphook(self, app_name):
if app_name in app.urls:
return app

raise ImproperlyConfigured('No registered apphook %r found' % app_name)
warnings.warn(_('No registered apphook "%r" found') % app_name)
return None


apphook_pool = ApphookPool()
4 changes: 3 additions & 1 deletion cms/appresolver.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
from django.utils.importlib import import_module

from django.conf import settings
from django.conf.urls import patterns
from django.contrib.sites.models import Site
from django.core.exceptions import ImproperlyConfigured
from django.core.urlresolvers import (RegexURLResolver, Resolver404, reverse,
Expand All @@ -24,7 +25,6 @@
from cms.models.pagemodel import Page
from cms.utils.i18n import force_language, get_language_list


APP_RESOLVERS = []


Expand Down Expand Up @@ -237,6 +237,8 @@ def get_app_patterns():
if title.page_id not in hooked_applications:
hooked_applications[title.page_id] = {}
app = apphook_pool.get_apphook(title.page.application_urls)
if not app:
return patterns('')
app_ns = app.app_name, title.page.application_namespace
with force_language(title.language):
hooked_applications[title.page_id][title.language] = (
Expand Down
3 changes: 2 additions & 1 deletion cms/cms_menus.py
Original file line number Diff line number Diff line change
Expand Up @@ -143,7 +143,8 @@ def page_to_node(page, home, cut):
app_name = page.get_application_urls(fallback=False)
if app_name: # it means it is an apphook
app = apphook_pool.get_apphook(app_name)
extenders += app.menus
if app:
extenders += app.menus
exts = []
for ext in extenders:
if hasattr(ext, "get_instances"):
Expand Down
2 changes: 1 addition & 1 deletion cms/toolbar/toolbar.py
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ def __init__(self, request):
except (TypeError, AttributeError):
# no decorator
self.app_name = decorator.__module__
except Resolver404:
except (Resolver404, AttributeError):
self.app_name = ""
toolbars = toolbar_pool.get_toolbars()
parts = self.app_name.split('.')
Expand Down
17 changes: 9 additions & 8 deletions cms/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -134,14 +134,15 @@ def details(request, slug):
if app_urls and not skip_app:
app = apphook_pool.get_apphook(app_urls)
pattern_list = []
for urlpatterns in get_app_urls(app.urls):
pattern_list += urlpatterns
try:
view, args, kwargs = resolve('/', tuple(pattern_list))
return view(request, *args, **kwargs)
except Resolver404:
pass
# Check if the page has a redirect url defined for this language.
if app:
for urlpatterns in get_app_urls(app.urls):
pattern_list += urlpatterns
try:
view, args, kwargs = resolve('/', tuple(pattern_list))
return view(request, *args, **kwargs)
except Resolver404:
pass
# Check if the page has a redirect url defined for this language.
redirect_url = page.get_redirect(language=current_language)
if redirect_url:
if (is_language_prefix_patterns_used() and redirect_url[0] == "/"
Expand Down

0 comments on commit c89c7d7

Please sign in to comment.