Compare commits
9 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 7137cbab08 | |||
| 3f7b1e54e9 | |||
| cf76fd412e | |||
| ab0afff087 | |||
| e3811e2609 | |||
| 47a3d66d5c | |||
| 2700b4ff12 | |||
| 6a1897b95c | |||
| e5768da21b |
+47
-25
@@ -1,38 +1,60 @@
|
||||
language: python
|
||||
python: 3.5
|
||||
env:
|
||||
- TOX_ENV=py27-17
|
||||
- TOX_ENV=py27-18
|
||||
- TOX_ENV=py27-19
|
||||
- TOX_ENV=py27-110
|
||||
- TOX_ENV=py27-111
|
||||
- TOX_ENV=py34-17
|
||||
- TOX_ENV=py34-18
|
||||
- TOX_ENV=py34-19
|
||||
- TOX_ENV=py34-110
|
||||
- TOX_ENV=py34-111
|
||||
- TOX_ENV=py34-20
|
||||
- TOX_ENV=py34-21
|
||||
- TOX_ENV=py35-18
|
||||
- TOX_ENV=py35-19
|
||||
- TOX_ENV=py35-110
|
||||
- TOX_ENV=py35-111
|
||||
- TOX_ENV=py35-20
|
||||
- TOX_ENV=py35-21
|
||||
- TOX_ENV=py35-master
|
||||
- TOX_ENV=py27-dj17
|
||||
- TOX_ENV=py27-dj18
|
||||
- TOX_ENV=py27-dj19
|
||||
- TOX_ENV=py27-dj110
|
||||
- TOX_ENV=py27-dj111
|
||||
- TOX_ENV=py34-dj17
|
||||
- TOX_ENV=py34-dj18
|
||||
- TOX_ENV=py34-dj19
|
||||
- TOX_ENV=py34-dj110
|
||||
- TOX_ENV=py34-dj111
|
||||
- TOX_ENV=py34-dj20
|
||||
- TOX_ENV=py35-dj18
|
||||
- TOX_ENV=py35-dj19
|
||||
- TOX_ENV=py35-dj110
|
||||
- TOX_ENV=py35-dj111
|
||||
- TOX_ENV=py35-dj20
|
||||
- TOX_ENV=py35-dj21
|
||||
- TOX_ENV=py35-djmaster
|
||||
# - TOX_ENV=py36-dj111
|
||||
# - TOX_ENV=py36-dj20
|
||||
# - TOX_ENV=py36-dj21
|
||||
# - TOX_ENV=py36-djmaster
|
||||
# - TOX_ENV=py37-dj20
|
||||
# - TOX_ENV=py37-dj21
|
||||
# - TOX_ENV=py37-djmaster
|
||||
matrix:
|
||||
include:
|
||||
- python: "3.6"
|
||||
env: TOX_ENV=py36-111
|
||||
env: TOX_ENV=py36-dj111
|
||||
- python: "3.6"
|
||||
env: TOX_ENV=py36-20
|
||||
env: TOX_ENV=py36-dj20
|
||||
- python: "3.6"
|
||||
env: TOX_ENV=py36-21
|
||||
env: TOX_ENV=py36-dj21
|
||||
- python: "3.6"
|
||||
env: TOX_ENV=py36-master
|
||||
env: TOX_ENV=py36-djmaster
|
||||
- python: "3.7"
|
||||
env: TOX_ENV=py37-dj20
|
||||
dist: xenial
|
||||
language: python
|
||||
sudo: required
|
||||
- python: "3.7"
|
||||
env: TOX_ENV=py37-dj21
|
||||
dist: xenial
|
||||
language: python
|
||||
sudo: required
|
||||
- python: "3.7"
|
||||
env: TOX_ENV=py37-djmaster
|
||||
dist: xenial
|
||||
language: python
|
||||
sudo: required
|
||||
allow_failures:
|
||||
- env: TOX_ENV=py35-master
|
||||
- env: TOX_ENV=py36-master
|
||||
- env: TOX_ENV=py35-djmaster
|
||||
- env: TOX_ENV=py36-djmaster
|
||||
- env: TOX_ENV=py37-djmaster
|
||||
install:
|
||||
- pip install tox
|
||||
script:
|
||||
|
||||
@@ -24,8 +24,8 @@ django-admin-interface is a modern **responsive flat admin interface customizabl
|
||||
- `sorl-thumbnail`
|
||||
|
||||
## Requirements
|
||||
- Python 2.7, 3.4, 3.5, 3.6
|
||||
- Django 1.7, 1.8, 1.9, 1.10, 1.11, 2.0
|
||||
- Python 2.7, 3.4, 3.5, 3.6, 3.7
|
||||
- Django 1.7, 1.8, 1.9, 1.10, 1.11, 2.0, 2.1
|
||||
|
||||
## Installation
|
||||
- Run `pip install django-admin-interface`
|
||||
|
||||
+2
-2
@@ -27,8 +27,8 @@ Features
|
||||
Requirements
|
||||
------------
|
||||
|
||||
- Python 2.7, 3.4, 3.5, 3.6
|
||||
- Django 1.7, 1.8, 1.9, 1.10, 1.11, 2.0
|
||||
- Python 2.7, 3.4, 3.5, 3.6, 3.7
|
||||
- Django 1.7, 1.8, 1.9, 1.10, 1.11, 2.0, 2.1
|
||||
|
||||
Installation
|
||||
------------
|
||||
|
||||
@@ -11,7 +11,9 @@ class AdminInterfaceConfig(AppConfig):
|
||||
|
||||
def ready(self):
|
||||
|
||||
from admin_interface import settings
|
||||
from admin_interface.models import Theme
|
||||
|
||||
settings.check_installed_apps()
|
||||
post_migrate.connect(
|
||||
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.')
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
if (typeof(django) !== 'undefined' && typeof(django.jQuery) !== 'undefined')
|
||||
{
|
||||
(function($) {
|
||||
|
||||
'use strict';
|
||||
|
||||
$(document).ready(function() {
|
||||
|
||||
$('.cancel-link').click(function(e) {
|
||||
e.preventDefault();
|
||||
var parentWindow = window.parent;
|
||||
if (parentWindow && typeof(parentWindow.dismissRelatedObjectModal) === 'function') {
|
||||
parentWindow.dismissRelatedObjectModal();
|
||||
} else {
|
||||
// fallback to default behavior
|
||||
history.back();
|
||||
}
|
||||
return false;
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
})(django.jQuery);
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
/* global opener */
|
||||
(function() {
|
||||
|
||||
'use strict';
|
||||
|
||||
function getModalWindowData()
|
||||
@@ -29,24 +29,24 @@
|
||||
// console.log(initData);
|
||||
switch (initData.action) {
|
||||
case 'change':
|
||||
if (typeof(openerRef.dismissChangeRelatedObjectPopup) == 'function') {
|
||||
if (typeof(openerRef.dismissChangeRelatedObjectPopup) === 'function') {
|
||||
openerRef.dismissChangeRelatedObjectPopup(modalRef, initData.value, initData.obj, initData.new_value);
|
||||
}
|
||||
break;
|
||||
case 'delete':
|
||||
if (typeof(openerRef.dismissDeleteRelatedObjectPopup) == 'function') {
|
||||
if (typeof(openerRef.dismissDeleteRelatedObjectPopup) === 'function') {
|
||||
openerRef.dismissDeleteRelatedObjectPopup(modalRef, initData.value);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
if (typeof(openerRef.dismissAddRelatedObjectPopup) == 'function') {
|
||||
if (typeof(openerRef.dismissAddRelatedObjectPopup) === 'function') {
|
||||
openerRef.dismissAddRelatedObjectPopup(modalRef, initData.value, initData.obj);
|
||||
}
|
||||
else if (typeof(openerRef.dismissAddAnotherPopup) == 'function') {
|
||||
else if (typeof(openerRef.dismissAddAnotherPopup) === 'function') {
|
||||
// django 1.7 compatibility
|
||||
openerRef.dismissAddAnotherPopup(modalRef, initData.value, initData.obj);
|
||||
}
|
||||
break;
|
||||
}
|
||||
})();
|
||||
|
||||
})();
|
||||
@@ -129,5 +129,4 @@ if (typeof(django) !== 'undefined' && typeof(django.jQuery) !== 'undefined')
|
||||
});
|
||||
|
||||
})(django.jQuery);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,3 +1,3 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
__version__ = '0.7.0'
|
||||
__version__ = '0.8.1'
|
||||
|
||||
@@ -46,6 +46,7 @@ setup(
|
||||
'Framework :: Django :: 1.10',
|
||||
'Framework :: Django :: 1.11',
|
||||
'Framework :: Django :: 2.0',
|
||||
'Framework :: Django :: 2.1',
|
||||
'Intended Audience :: Developers',
|
||||
'License :: OSI Approved :: MIT License',
|
||||
'Natural Language :: English',
|
||||
@@ -56,6 +57,7 @@ setup(
|
||||
'Programming Language :: Python :: 3.4',
|
||||
'Programming Language :: Python :: 3.5',
|
||||
'Programming Language :: Python :: 3.6',
|
||||
'Programming Language :: Python :: 3.7',
|
||||
'Topic :: Software Development :: Build Tools',
|
||||
],
|
||||
license='MIT',
|
||||
|
||||
+31
-8
@@ -9,24 +9,46 @@ SECRET_KEY = 'django-admin-interface'
|
||||
|
||||
ALLOWED_HOSTS = ['*']
|
||||
|
||||
# Application definition
|
||||
INSTALLED_APPS = [
|
||||
|
||||
'admin_interface',
|
||||
'flat_responsive',
|
||||
'flat', #if django version < 1.9
|
||||
'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.auth',
|
||||
'django.contrib.contenttypes',
|
||||
'django.contrib.messages',
|
||||
'django.contrib.sessions',
|
||||
]
|
||||
|
||||
MIDDLEWARE_CLASSES = [
|
||||
'django.contrib.sessions.middleware.SessionMiddleware',
|
||||
'django.middleware.common.CommonMiddleware',
|
||||
'django.contrib.auth.middleware.AuthenticationMiddleware',
|
||||
]
|
||||
if django.VERSION < (2, 0):
|
||||
MIDDLEWARE_CLASSES = [
|
||||
'django.contrib.auth.middleware.AuthenticationMiddleware',
|
||||
'django.contrib.messages.middleware.MessageMiddleware'
|
||||
'django.contrib.sessions.middleware.SessionMiddleware',
|
||||
'django.middleware.common.CommonMiddleware',
|
||||
]
|
||||
else:
|
||||
MIDDLEWARE = [
|
||||
'django.contrib.auth.middleware.AuthenticationMiddleware',
|
||||
'django.contrib.messages.middleware.MessageMiddleware',
|
||||
'django.contrib.sessions.middleware.SessionMiddleware',
|
||||
'django.middleware.common.CommonMiddleware',
|
||||
]
|
||||
|
||||
TEMPLATES = [{
|
||||
'BACKEND': 'django.template.backends.django.DjangoTemplates',
|
||||
@@ -35,6 +57,7 @@ TEMPLATES = [{
|
||||
'OPTIONS': {
|
||||
'context_processors': [
|
||||
'django.contrib.auth.context_processors.auth',
|
||||
'django.contrib.messages.context_processors.messages',
|
||||
]
|
||||
},
|
||||
},]
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -1,20 +1,21 @@
|
||||
[tox]
|
||||
envlist =
|
||||
py27-{17,18,19,110,111},
|
||||
py34-{17,18,19,110,111,20,21},
|
||||
py35-{18,19,110,111,20,21,master},
|
||||
py36-{18,19,110,111,20,21,master},
|
||||
py27-{dj17,dj18,dj19,dj110,dj111},
|
||||
py34-{dj17,dj18,dj19,dj110,dj111,dj20},
|
||||
py35-{dj18,dj19,dj110,dj111,dj20,dj21,djmaster},
|
||||
py36-{dj18,dj19,dj110,dj111,dj20,dj21,djmaster},
|
||||
py37-{dj20,dj21,djmaster},
|
||||
[testenv]
|
||||
passenv = CI TRAVIS TRAVIS_*
|
||||
deps =
|
||||
17: Django >= 1.7, < 1.8
|
||||
18: Django >= 1.8, < 1.9
|
||||
19: Django >= 1.9, < 1.10
|
||||
110: Django >= 1.10, < 1.11
|
||||
111: Django >= 1.11, < 1.12
|
||||
20: Django >= 2.0, < 2.1
|
||||
21: Django >= 2.1, < 2.2
|
||||
master: https://github.com/django/django/archive/master.tar.gz
|
||||
dj17: Django >= 1.7, < 1.8
|
||||
dj18: Django >= 1.8, < 1.9
|
||||
dj19: Django >= 1.9, < 1.10
|
||||
dj110: Django >= 1.10, < 1.11
|
||||
dj111: Django >= 1.11, < 1.12
|
||||
dj20: Django >= 2.0, < 2.1
|
||||
dj21: Django >= 2.1, < 2.2
|
||||
djmaster: https://github.com/django/django/archive/master.tar.gz
|
||||
coverage
|
||||
codecov
|
||||
commands =
|
||||
|
||||
Reference in New Issue
Block a user