Skip to content

Commit 1d3a013

Browse files
committed
Merge pull request django-cms#3360 from mmarzantowicz/feature/app_setup_refactor
Refactored code that checks settings and dependencies
2 parents cb40424 + 40221d2 commit 1d3a013

File tree

3 files changed

+40
-24
lines changed

3 files changed

+40
-24
lines changed

cms/apps.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
from django.apps import AppConfig
22
from django.utils.translation import ugettext_lazy as _
33

4+
from cms.utils.setup import setup
5+
46

57
class CMSConfig(AppConfig):
68
name = 'cms'
79
verbose_name = _("django CMS")
810

911
def ready(self):
10-
from cms.models import validate_dependencies, validate_settings
11-
validate_dependencies()
12-
validate_settings()
12+
setup()

cms/models/__init__.py

Lines changed: 4 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,4 @@
11
# -*- coding: utf-8 -*-
2-
from django.conf import settings as d_settings
3-
from cms.utils.compat import DJANGO_1_6
4-
from cms.utils.compat.dj import is_installed
5-
62
from .settingmodels import * # nopyflakes
73
from .pagemodel import * # nopyflakes
84
from .permissionmodels import * # nopyflakes
@@ -16,22 +12,9 @@
1612
from cms import signals as s_import # nopyflakes
1713

1814

19-
def validate_settings():
20-
if "django.core.context_processors.request" not in d_settings.TEMPLATE_CONTEXT_PROCESSORS:
21-
raise ImproperlyConfigured('django-cms needs django.core.context_processors.request in settings.TEMPLATE_CONTEXT_PROCESSORS to work correctly.')
22-
if not is_installed('mptt'):
23-
raise ImproperlyConfigured('django-cms needs django-mptt installed.')
24-
if 'cms.middleware.multilingual.MultilingualURLMiddleware' in d_settings.MIDDLEWARE_CLASSES and 'django.middleware.locale.LocaleMiddleware' in d_settings.MIDDLEWARE_CLASSES:
25-
raise ImproperlyConfigured('django-cms MultilingualURLMiddleware replaces django.middleware.locale.LocaleMiddleware! Please remove django.middleware.locale.LocaleMiddleware from your MIDDLEWARE_CLASSES settings.')
26-
27-
28-
def validate_dependencies():
29-
# check for right version of reversions
30-
if is_installed('reversion'):
31-
from reversion.admin import VersionAdmin
32-
if not hasattr(VersionAdmin, 'get_urls'):
33-
raise ImproperlyConfigured('django-cms requires never version of reversion (VersionAdmin must contain get_urls method)')
15+
# Temporary support for django version 1.6 and below
16+
from cms.utils.compat import DJANGO_1_6
3417

3518
if DJANGO_1_6:
36-
validate_dependencies()
37-
validate_settings()
19+
from cms.utils.setup import setup
20+
setup()

cms/utils/setup.py

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
from django.conf import settings
2+
from django.core.exceptions import ImproperlyConfigured
3+
4+
from cms.utils.compat.dj import is_installed as app_is_installed
5+
6+
7+
def validate_dependencies():
8+
"""
9+
Check for installed apps, their versions and configuration options
10+
"""
11+
if not app_is_installed('mptt'):
12+
raise ImproperlyConfigured('django CMS requires django-mptt package.')
13+
14+
if not app_is_installed('reversion'):
15+
from reversion.admin import VersionAdmin
16+
if not hasattr(VersionAdmin, 'get_urls'):
17+
raise ImproperlyConfigured('django CMS requires newer version of reversion (VersionAdmin must contain get_urls method)')
18+
19+
20+
def validate_settings():
21+
"""
22+
Check project settings file for required options
23+
"""
24+
if 'django.core.context_processors.request' not in settings.TEMPLATE_CONTEXT_PROCESSORS:
25+
raise ImproperlyConfigured('django CMS requires django.core.context_processors.request in settings.TEMPLATE_CONTEXT_PROCESSORS to work correctly.')
26+
27+
28+
def setup():
29+
"""
30+
Gather all checks and validations
31+
"""
32+
validate_dependencies()
33+
validate_settings()

0 commit comments

Comments
 (0)