Added automatic check of 3rd party installed apps according to django version.
parent
e3811e2609
commit
ab0afff087
|
|
@ -11,7 +11,9 @@ class AdminInterfaceConfig(AppConfig):
|
||||||
|
|
||||||
def ready(self):
|
def ready(self):
|
||||||
|
|
||||||
|
from admin_interface import settings
|
||||||
from admin_interface.models import Theme
|
from admin_interface.models import Theme
|
||||||
|
|
||||||
|
settings.check_installed_apps()
|
||||||
post_migrate.connect(
|
post_migrate.connect(
|
||||||
Theme.post_migrate_handler, sender=self)
|
Theme.post_migrate_handler, sender=self)
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,38 @@
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
import django
|
||||||
|
from django.conf import settings
|
||||||
|
from django.core.exceptions import ImproperlyConfigured
|
||||||
|
|
||||||
|
|
||||||
|
def check_installed_apps():
|
||||||
|
dj_version = django.VERSION
|
||||||
|
installed_apps = settings.INSTALLED_APPS
|
||||||
|
|
||||||
|
if 'colorfield' not in installed_apps:
|
||||||
|
raise ImproperlyConfigured(
|
||||||
|
'\'colorfield\' needed, '
|
||||||
|
'add it to settings.INSTALLED_APPS.')
|
||||||
|
|
||||||
|
if dj_version < (1, 9):
|
||||||
|
if 'flat' not in installed_apps:
|
||||||
|
raise ImproperlyConfigured(
|
||||||
|
'\'flat\' needed before django 1.9, '
|
||||||
|
'add it to settings.INSTALLED_APPS.')
|
||||||
|
else:
|
||||||
|
if 'flat' in installed_apps:
|
||||||
|
raise ImproperlyConfigured(
|
||||||
|
'\'flat\' not needed since django 1.9, '
|
||||||
|
'remove it from settings.INSTALLED_APPS.')
|
||||||
|
|
||||||
|
if dj_version < (2, 0):
|
||||||
|
if 'flat_responsive' not in installed_apps:
|
||||||
|
raise ImproperlyConfigured(
|
||||||
|
'\'flat_responsive\' needed before django 2.0, '
|
||||||
|
'add it to settings.INSTALLED_APPS.')
|
||||||
|
else:
|
||||||
|
if 'flat_responsive' in installed_apps:
|
||||||
|
raise ImproperlyConfigured(
|
||||||
|
'\'flat_responsive\' not needed since django 2.0, '
|
||||||
|
'remove it from settings.INSTALLED_APPS.')
|
||||||
|
|
||||||
|
|
@ -9,13 +9,25 @@ SECRET_KEY = 'django-admin-interface'
|
||||||
|
|
||||||
ALLOWED_HOSTS = ['*']
|
ALLOWED_HOSTS = ['*']
|
||||||
|
|
||||||
|
# Application definition
|
||||||
INSTALLED_APPS = [
|
INSTALLED_APPS = [
|
||||||
|
|
||||||
'admin_interface',
|
'admin_interface',
|
||||||
'flat_responsive',
|
|
||||||
'flat', #if django version < 1.9
|
|
||||||
'colorfield',
|
'colorfield',
|
||||||
|
]
|
||||||
|
|
||||||
|
if django.VERSION < (1, 9):
|
||||||
|
# ONLY if django version < 1.9
|
||||||
|
INSTALLED_APPS += [
|
||||||
|
'flat',
|
||||||
|
]
|
||||||
|
|
||||||
|
if django.VERSION < (2, 0):
|
||||||
|
# ONLY if django version < 2.0
|
||||||
|
INSTALLED_APPS += [
|
||||||
|
'flat_responsive',
|
||||||
|
]
|
||||||
|
|
||||||
|
INSTALLED_APPS += [
|
||||||
'django.contrib.admin',
|
'django.contrib.admin',
|
||||||
'django.contrib.auth',
|
'django.contrib.auth',
|
||||||
'django.contrib.contenttypes',
|
'django.contrib.contenttypes',
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,92 @@
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
import django
|
||||||
|
from django.conf import settings
|
||||||
|
from django.core.exceptions import ImproperlyConfigured
|
||||||
|
from django.test import override_settings, TestCase
|
||||||
|
|
||||||
|
from admin_interface.settings import check_installed_apps
|
||||||
|
|
||||||
|
|
||||||
|
class AdminInterfaceSettingsTestCase(TestCase):
|
||||||
|
|
||||||
|
DJANGO_APPS = [
|
||||||
|
'django.contrib.admin',
|
||||||
|
'django.contrib.auth',
|
||||||
|
'django.contrib.contenttypes',
|
||||||
|
'django.contrib.messages',
|
||||||
|
'django.contrib.sessions',
|
||||||
|
]
|
||||||
|
|
||||||
|
def setUp(self):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def tearDown(self):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def __test_installed_apps(self):
|
||||||
|
dj_version = django.VERSION
|
||||||
|
installed_apps = settings.INSTALLED_APPS
|
||||||
|
|
||||||
|
if 'colorfield' not in installed_apps:
|
||||||
|
self.assertRaises(ImproperlyConfigured, check_installed_apps)
|
||||||
|
|
||||||
|
elif 'flat' not in installed_apps and dj_version < (1, 9):
|
||||||
|
self.assertRaises(ImproperlyConfigured, check_installed_apps)
|
||||||
|
|
||||||
|
elif 'flat' in installed_apps and dj_version >= (1, 9):
|
||||||
|
self.assertRaises(ImproperlyConfigured, check_installed_apps)
|
||||||
|
|
||||||
|
elif 'flat_responsive' not in installed_apps and dj_version < (2, 0):
|
||||||
|
self.assertRaises(ImproperlyConfigured, check_installed_apps)
|
||||||
|
|
||||||
|
elif 'flat_responsive' in installed_apps and dj_version >= (2, 0):
|
||||||
|
self.assertRaises(ImproperlyConfigured, check_installed_apps)
|
||||||
|
|
||||||
|
else:
|
||||||
|
check_installed_apps()
|
||||||
|
|
||||||
|
@override_settings(
|
||||||
|
INSTALLED_APPS = [
|
||||||
|
'admin_interface',
|
||||||
|
'colorfield',
|
||||||
|
'flat',
|
||||||
|
'flat_responsive',
|
||||||
|
] + DJANGO_APPS
|
||||||
|
)
|
||||||
|
def test_installed_apps_all(self):
|
||||||
|
self.__test_installed_apps()
|
||||||
|
|
||||||
|
@override_settings(
|
||||||
|
INSTALLED_APPS = [
|
||||||
|
'admin_interface',
|
||||||
|
# 'colorfield',
|
||||||
|
'flat',
|
||||||
|
'flat_responsive',
|
||||||
|
] + DJANGO_APPS
|
||||||
|
)
|
||||||
|
def test_installed_apps_no_colorfield(self):
|
||||||
|
self.__test_installed_apps()
|
||||||
|
|
||||||
|
@override_settings(
|
||||||
|
INSTALLED_APPS = [
|
||||||
|
'admin_interface',
|
||||||
|
'colorfield',
|
||||||
|
# 'flat',
|
||||||
|
'flat_responsive',
|
||||||
|
] + DJANGO_APPS
|
||||||
|
)
|
||||||
|
def test_installed_apps_no_flat(self):
|
||||||
|
self.__test_installed_apps()
|
||||||
|
|
||||||
|
@override_settings(
|
||||||
|
INSTALLED_APPS = [
|
||||||
|
'admin_interface',
|
||||||
|
'colorfield',
|
||||||
|
'flat',
|
||||||
|
# 'flat_responsive',
|
||||||
|
] + DJANGO_APPS
|
||||||
|
)
|
||||||
|
def test_installed_apps_no_flat_responsive(self):
|
||||||
|
self.__test_installed_apps()
|
||||||
|
|
||||||
Loading…
Reference in New Issue