From 6984a47297081bbeb6c9f1a54bbec766a82af7bf Mon Sep 17 00:00:00 2001 From: Paulo Date: Mon, 3 Jul 2017 14:21:43 -0400 Subject: [PATCH] Trim the travis test matrix --- .travis.yml | 228 ++++++++++++++++++++++++----------- cms/templatetags/cms_tags.py | 3 +- cms/tests/test_cache.py | 7 -- cms/utils/compat/dj.py | 6 + cms/wizards/forms.py | 109 ++++++++--------- 5 files changed, 218 insertions(+), 135 deletions(-) diff --git a/.travis.yml b/.travis.yml index 3fede036920..3fd3ac783d2 100644 --- a/.travis.yml +++ b/.travis.yml @@ -33,27 +33,27 @@ env: matrix: - FRONTEND=1 UNIT=1 - FRONTEND=1 LINT=1 - - FRONTEND=1 INTEGRATION=1 INTEGRATION_TESTS_BUCKET=1 DJANGO=1.8 DATABASE_URL='sqlite://localhost/testdb.sqlite' MIGRATE_OPTION='--migrate' - - FRONTEND=1 INTEGRATION=1 INTEGRATION_TESTS_BUCKET=2 DJANGO=1.8 DATABASE_URL='sqlite://localhost/testdb.sqlite' MIGRATE_OPTION='--migrate' - - FRONTEND=1 INTEGRATION=1 INTEGRATION_TESTS_BUCKET=3 DJANGO=1.8 DATABASE_URL='sqlite://localhost/testdb.sqlite' MIGRATE_OPTION='--migrate' - - DJANGO=1.11 DATABASE_URL='sqlite://localhost/:memory:' MIGRATE_OPTION='--migrate' + - FRONTEND=1 INTEGRATION=1 INTEGRATION_TESTS_BUCKET=1 DJANGO=1.8 DATABASE_URL='sqlite://localhost/testdb.sqlite' + - FRONTEND=1 INTEGRATION=1 INTEGRATION_TESTS_BUCKET=2 DJANGO=1.8 DATABASE_URL='sqlite://localhost/testdb.sqlite' + - FRONTEND=1 INTEGRATION=1 INTEGRATION_TESTS_BUCKET=3 DJANGO=1.8 DATABASE_URL='sqlite://localhost/testdb.sqlite' + - DJANGO=1.11 DATABASE_URL='sqlite://localhost/:memory:' - DJANGO=1.11 DATABASE_URL='mysql://root@127.0.0.1/djangocms_test' - - DJANGO=1.11 DATABASE_URL='postgres://postgres@127.0.0.1/djangocms_test' MIGRATE_OPTION='--migrate' + - DJANGO=1.11 DATABASE_URL='postgres://postgres@127.0.0.1/djangocms_test' - DJANGO=1.11 DATABASE_URL='postgres://postgres@127.0.0.1/djangocms_test' AUTH_USER_MODEL='emailuserapp.EmailUser' - DJANGO=1.11 DATABASE_URL='postgres://postgres@127.0.0.1/djangocms_test' AUTH_USER_MODEL='customuserapp.User' - - TEST_DOCS=1 DJANGO=1.10 DATABASE_URL='sqlite://localhost/:memory:' MIGRATE_OPTION='--migrate' + - TEST_DOCS=1 DJANGO=1.10 DATABASE_URL='sqlite://localhost/:memory:' - DJANGO=1.10 DATABASE_URL='mysql://root@127.0.0.1/djangocms_test' - - DJANGO=1.10 DATABASE_URL='postgres://postgres@127.0.0.1/djangocms_test' MIGRATE_OPTION='--migrate' + - DJANGO=1.10 DATABASE_URL='postgres://postgres@127.0.0.1/djangocms_test' - DJANGO=1.10 DATABASE_URL='postgres://postgres@127.0.0.1/djangocms_test' AUTH_USER_MODEL='emailuserapp.EmailUser' - DJANGO=1.10 DATABASE_URL='postgres://postgres@127.0.0.1/djangocms_test' AUTH_USER_MODEL='customuserapp.User' - - DJANGO=1.9 DATABASE_URL='sqlite://localhost/:memory:' MIGRATE_OPTION='--migrate' + - DJANGO=1.9 DATABASE_URL='sqlite://localhost/:memory:' - DJANGO=1.9 DATABASE_URL='mysql://root@127.0.0.1/djangocms_test' - - DJANGO=1.9 DATABASE_URL='postgres://postgres@127.0.0.1/djangocms_test' MIGRATE_OPTION='--migrate' + - DJANGO=1.9 DATABASE_URL='postgres://postgres@127.0.0.1/djangocms_test' - DJANGO=1.9 DATABASE_URL='postgres://postgres@127.0.0.1/djangocms_test' AUTH_USER_MODEL='emailuserapp.EmailUser' - DJANGO=1.9 DATABASE_URL='postgres://postgres@127.0.0.1/djangocms_test' AUTH_USER_MODEL='customuserapp.User' - - DJANGO=1.8 DATABASE_URL='sqlite://localhost/:memory:' MIGRATE_OPTION='--migrate' + - DJANGO=1.8 DATABASE_URL='sqlite://localhost/:memory:' - DJANGO=1.8 DATABASE_URL='mysql://root@127.0.0.1/djangocms_test' - - DJANGO=1.8 DATABASE_URL='postgres://postgres@127.0.0.1/djangocms_test' MIGRATE_OPTION='--migrate' + - DJANGO=1.8 DATABASE_URL='postgres://postgres@127.0.0.1/djangocms_test' - DJANGO=1.8 DATABASE_URL='postgres://postgres@127.0.0.1/djangocms_test' AUTH_USER_MODEL='emailuserapp.EmailUser' - DJANGO=1.8 DATABASE_URL='postgres://postgres@127.0.0.1/djangocms_test' AUTH_USER_MODEL='customuserapp.User' @@ -84,7 +84,7 @@ script: - if [ "$FRONTEND" == 1 ] && [ "$UNIT" == 1 ] && [ "$ONLY_DOCS" != 0 ]; then gulp tests:unit; fi; - if [ "$FRONTEND" == 1 ] && [ "$LINT" == 1 ] && [ "$ONLY_DOCS" != 0 ]; then gulp lint; fi; - if [ "$FRONTEND" == 1 ] && [ "$INTEGRATION" == 1 ] && [ "$ONLY_DOCS" != 0 ]; then pip install -e .; pip freeze; gulp tests:integration; fi; - - if [ "$FRONTEND" != 1 ] && ([ "$TEST_DOCS" == 1 ] && [ "$ONLY_DOCS" == 0 ] || [ "$ONLY_DOCS" != 0 ]); then coverage run --parallel-mode manage.py test $MIGRATE_OPTION; fi; + - if [ "$FRONTEND" != 1 ] && ([ "$TEST_DOCS" == 1 ] && [ "$ONLY_DOCS" == 0 ] || [ "$ONLY_DOCS" != 0 ]); then coverage run --parallel-mode manage.py test; fi; - if [ "$FRONTEND" != 1 ] && ([ "$TEST_DOCS" == 1 ] && [ "$ONLY_DOCS" == 0 ] || [ "$ONLY_DOCS" != 0 ]); then coverage combine; fi; after_success: coveralls @@ -99,122 +99,208 @@ notifications: matrix: exclude: - - python: 3.3 - env: TEST_DOCS=1 DJANGO=1.10 DATABASE_URL='sqlite://localhost/:memory:' MIGRATE_OPTION='--migrate' - - python: 3.4 - env: TEST_DOCS=1 DJANGO=1.10 DATABASE_URL='sqlite://localhost/:memory:' MIGRATE_OPTION='--migrate' - - python: 3.5 - env: TEST_DOCS=1 DJANGO=1.10 DATABASE_URL='sqlite://localhost/:memory:' MIGRATE_OPTION='--migrate' - python: 2.7 - env: TEST_DOCS=1 DJANGO=1.10 DATABASE_URL='sqlite://localhost/:memory:' MIGRATE_OPTION='--migrate' + env: TEST_DOCS=1 DJANGO=1.10 DATABASE_URL='sqlite://localhost/:memory:' + - python: 2.7 + env: DJANGO=1.11 DATABASE_URL='mysql://root@127.0.0.1/djangocms_test' + - python: 2.7 + env: DJANGO=1.11 DATABASE_URL='postgres://postgres@127.0.0.1/djangocms_test' + - python: 2.7 + env: DJANGO=1.11 DATABASE_URL='postgres://postgres@127.0.0.1/djangocms_test' AUTH_USER_MODEL='emailuserapp.EmailUser' + - python: 2.7 + env: DJANGO=1.11 DATABASE_URL='postgres://postgres@127.0.0.1/djangocms_test' AUTH_USER_MODEL='customuserapp.User' + - python: 2.7 + env: DJANGO=1.10 DATABASE_URL='sqlite://localhost/:memory:' + - python: 2.7 + env: DJANGO=1.10 DATABASE_URL='postgres://postgres@127.0.0.1/djangocms_test' + - python: 2.7 + env: DJANGO=1.10 DATABASE_URL='postgres://postgres@127.0.0.1/djangocms_test' AUTH_USER_MODEL='emailuserapp.EmailUser' + - python: 2.7 + env: DJANGO=1.10 DATABASE_URL='postgres://postgres@127.0.0.1/djangocms_test' AUTH_USER_MODEL='customuserapp.User' + - python: 2.7 + env: DJANGO=1.9 DATABASE_URL='sqlite://localhost/:memory:' + - python: 2.7 + env: DJANGO=1.9 DATABASE_URL='mysql://root@127.0.0.1/djangocms_test' + - python: 2.7 + env: DJANGO=1.9 DATABASE_URL='postgres://postgres@127.0.0.1/djangocms_test' AUTH_USER_MODEL='emailuserapp.EmailUser' + - python: 2.7 + env: DJANGO=1.9 DATABASE_URL='postgres://postgres@127.0.0.1/djangocms_test' AUTH_USER_MODEL='customuserapp.User' + - python: 2.7 + env: FRONTEND=1 INTEGRATION=1 INTEGRATION_TESTS_BUCKET=1 DJANGO=1.8 DATABASE_URL='sqlite://localhost/testdb.sqlite' + - python: 2.7 + env: FRONTEND=1 INTEGRATION=1 INTEGRATION_TESTS_BUCKET=2 DJANGO=1.8 DATABASE_URL='sqlite://localhost/testdb.sqlite' + - python: 2.7 + env: FRONTEND=1 INTEGRATION=1 INTEGRATION_TESTS_BUCKET=3 DJANGO=1.8 DATABASE_URL='sqlite://localhost/testdb.sqlite' + - python: 2.7 + env: FRONTEND=1 UNIT=1 + - python: 2.7 + env: FRONTEND=1 LINT=1 - python: 3.3 - env: DJANGO=1.11 DATABASE_URL='sqlite://localhost/:memory:' MIGRATE_OPTION='--migrate' + env: TEST_DOCS=1 DJANGO=1.10 DATABASE_URL='sqlite://localhost/:memory:' + - python: 3.3 + env: DJANGO=1.11 DATABASE_URL='sqlite://localhost/:memory:' - python: 3.3 env: DJANGO=1.11 DATABASE_URL='mysql://root@127.0.0.1/djangocms_test' - python: 3.3 - env: DJANGO=1.11 DATABASE_URL='postgres://postgres@127.0.0.1/djangocms_test' MIGRATE_OPTION='--migrate' + env: DJANGO=1.11 DATABASE_URL='postgres://postgres@127.0.0.1/djangocms_test' - python: 3.3 env: DJANGO=1.11 DATABASE_URL='postgres://postgres@127.0.0.1/djangocms_test' AUTH_USER_MODEL='emailuserapp.EmailUser' - python: 3.3 env: DJANGO=1.11 DATABASE_URL='postgres://postgres@127.0.0.1/djangocms_test' AUTH_USER_MODEL='customuserapp.User' - - - python: 3.3 - env: TEST_DOCS=1 DJANGO=1.10 DATABASE_URL='sqlite://localhost/:memory:' MIGRATE_OPTION='--migrate' - python: 3.3 env: DJANGO=1.10 DATABASE_URL='mysql://root@127.0.0.1/djangocms_test' - python: 3.3 - env: DJANGO=1.10 DATABASE_URL='postgres://postgres@127.0.0.1/djangocms_test' MIGRATE_OPTION='--migrate' + env: DJANGO=1.10 DATABASE_URL='postgres://postgres@127.0.0.1/djangocms_test' - python: 3.3 env: DJANGO=1.10 DATABASE_URL='postgres://postgres@127.0.0.1/djangocms_test' AUTH_USER_MODEL='emailuserapp.EmailUser' - python: 3.3 env: DJANGO=1.10 DATABASE_URL='postgres://postgres@127.0.0.1/djangocms_test' AUTH_USER_MODEL='customuserapp.User' - - - python: 3.3 - env: DJANGO=1.9 DATABASE_URL='sqlite://localhost/:memory:' MIGRATE_OPTION='--migrate' - python: 3.3 env: DJANGO=1.9 DATABASE_URL='mysql://root@127.0.0.1/djangocms_test' - python: 3.3 - env: DJANGO=1.9 DATABASE_URL='postgres://postgres@127.0.0.1/djangocms_test' MIGRATE_OPTION='--migrate' + env: DJANGO=1.9 DATABASE_URL='postgres://postgres@127.0.0.1/djangocms_test' - python: 3.3 env: DJANGO=1.9 DATABASE_URL='postgres://postgres@127.0.0.1/djangocms_test' AUTH_USER_MODEL='emailuserapp.EmailUser' - python: 3.3 env: DJANGO=1.9 DATABASE_URL='postgres://postgres@127.0.0.1/djangocms_test' AUTH_USER_MODEL='customuserapp.User' - - python: 3.3 - env: DJANGO=1.8 DATABASE_URL='sqlite://localhost/:memory:' MIGRATE_OPTION='--migrate' + env: DJANGO=1.8 DATABASE_URL='sqlite://localhost/:memory:' - python: 3.3 env: DJANGO=1.8 DATABASE_URL='mysql://root@127.0.0.1/djangocms_test' - python: 3.3 - env: DJANGO=1.8 DATABASE_URL='postgres://postgres@127.0.0.1/djangocms_test' MIGRATE_OPTION='--migrate' + env: DJANGO=1.8 DATABASE_URL='postgres://postgres@127.0.0.1/djangocms_test' - python: 3.3 env: DJANGO=1.8 DATABASE_URL='postgres://postgres@127.0.0.1/djangocms_test' AUTH_USER_MODEL='customuserapp.User' - + - python: 3.3 + env: DJANGO=1.8 DATABASE_URL='postgres://postgres@127.0.0.1/djangocms_test' AUTH_USER_MODEL='emailuserapp.EmailUser' + - python: 3.3 + env: FRONTEND=1 INTEGRATION=1 INTEGRATION_TESTS_BUCKET=1 DJANGO=1.8 DATABASE_URL='sqlite://localhost/testdb.sqlite' + - python: 3.3 + env: FRONTEND=1 INTEGRATION=1 INTEGRATION_TESTS_BUCKET=2 DJANGO=1.8 DATABASE_URL='sqlite://localhost/testdb.sqlite' + - python: 3.3 + env: FRONTEND=1 INTEGRATION=1 INTEGRATION_TESTS_BUCKET=3 DJANGO=1.8 DATABASE_URL='sqlite://localhost/testdb.sqlite' - python: 3.3 env: FRONTEND=1 UNIT=1 - python: 3.3 env: FRONTEND=1 LINT=1 + - python: 3.4 - env: FRONTEND=1 UNIT=1 + env: TEST_DOCS=1 DJANGO=1.10 DATABASE_URL='sqlite://localhost/:memory:' + - python: 3.4 + env: DJANGO=1.11 DATABASE_URL='sqlite://localhost/:memory:' + - python: 3.4 + env: DJANGO=1.11 DATABASE_URL='mysql://root@127.0.0.1/djangocms_test' + - python: 3.4 + env: DJANGO=1.11 DATABASE_URL='postgres://postgres@127.0.0.1/djangocms_test' + - python: 3.4 + env: DJANGO=1.11 DATABASE_URL='postgres://postgres@127.0.0.1/djangocms_test' AUTH_USER_MODEL='emailuserapp.EmailUser' + - python: 3.4 + env: DJANGO=1.11 DATABASE_URL='postgres://postgres@127.0.0.1/djangocms_test' AUTH_USER_MODEL='customuserapp.User' + - python: 3.4 + env: DJANGO=1.10 DATABASE_URL='mysql://root@127.0.0.1/djangocms_test' + - python: 3.4 + env: DJANGO=1.10 DATABASE_URL='postgres://postgres@127.0.0.1/djangocms_test' + - python: 3.4 + env: DJANGO=1.10 DATABASE_URL='postgres://postgres@127.0.0.1/djangocms_test' AUTH_USER_MODEL='emailuserapp.EmailUser' + - python: 3.4 + env: DJANGO=1.10 DATABASE_URL='postgres://postgres@127.0.0.1/djangocms_test' AUTH_USER_MODEL='customuserapp.User' + - python: 3.4 + env: DJANGO=1.9 DATABASE_URL='sqlite://localhost/:memory:' + - python: 3.4 + env: DJANGO=1.9 DATABASE_URL='mysql://root@127.0.0.1/djangocms_test' + - python: 3.4 + env: DJANGO=1.9 DATABASE_URL='postgres://postgres@127.0.0.1/djangocms_test' + - python: 3.4 + env: DJANGO=1.9 DATABASE_URL='postgres://postgres@127.0.0.1/djangocms_test' AUTH_USER_MODEL='emailuserapp.EmailUser' + - python: 3.4 + env: DJANGO=1.9 DATABASE_URL='postgres://postgres@127.0.0.1/djangocms_test' AUTH_USER_MODEL='customuserapp.User' + - python: 3.4 + env: DJANGO=1.8 DATABASE_URL='sqlite://localhost/:memory:' + - python: 3.4 + env: DJANGO=1.8 DATABASE_URL='mysql://root@127.0.0.1/djangocms_test' + - python: 3.4 + env: DJANGO=1.8 DATABASE_URL='postgres://postgres@127.0.0.1/djangocms_test' + - python: 3.4 + env: DJANGO=1.8 DATABASE_URL='postgres://postgres@127.0.0.1/djangocms_test' AUTH_USER_MODEL='customuserapp.User' + - python: 3.4 + env: DJANGO=1.8 DATABASE_URL='postgres://postgres@127.0.0.1/djangocms_test' AUTH_USER_MODEL='emailuserapp.EmailUser' + - python: 3.4 + env: FRONTEND=1 INTEGRATION=1 INTEGRATION_TESTS_BUCKET=1 DJANGO=1.8 DATABASE_URL='sqlite://localhost/testdb.sqlite' + - python: 3.4 + env: FRONTEND=1 INTEGRATION=1 INTEGRATION_TESTS_BUCKET=2 DJANGO=1.8 DATABASE_URL='sqlite://localhost/testdb.sqlite' + - python: 3.4 + env: FRONTEND=1 INTEGRATION=1 INTEGRATION_TESTS_BUCKET=3 DJANGO=1.8 DATABASE_URL='sqlite://localhost/testdb.sqlite' - python: 3.4 - env: FRONTEND=1 LINT=1 - - python: 3.5 - env: FRONTEND=1 UNIT=1 - - python: 3.5 - env: FRONTEND=1 LINT=1 - - python: 2.7 env: FRONTEND=1 UNIT=1 - - python: 2.7 + - python: 3.4 env: FRONTEND=1 LINT=1 - - python: 3.3 - env: FRONTEND=1 INTEGRATION=1 INTEGRATION_TESTS_BUCKET=1 DJANGO=1.8 DATABASE_URL='sqlite://localhost/testdb.sqlite' MIGRATE_OPTION='--migrate' - - python: 3.4 - env: FRONTEND=1 INTEGRATION=1 INTEGRATION_TESTS_BUCKET=1 DJANGO=1.8 DATABASE_URL='sqlite://localhost/testdb.sqlite' MIGRATE_OPTION='--migrate' - - python: 3.5 - env: FRONTEND=1 INTEGRATION=1 INTEGRATION_TESTS_BUCKET=1 DJANGO=1.8 DATABASE_URL='sqlite://localhost/testdb.sqlite' MIGRATE_OPTION='--migrate' - python: 3.6 - env: FRONTEND=1 INTEGRATION=1 INTEGRATION_TESTS_BUCKET=1 DJANGO=1.8 DATABASE_URL='sqlite://localhost/testdb.sqlite' MIGRATE_OPTION='--migrate' - - - python: 3.3 - env: FRONTEND=1 INTEGRATION=1 INTEGRATION_TESTS_BUCKET=2 DJANGO=1.8 DATABASE_URL='sqlite://localhost/testdb.sqlite' MIGRATE_OPTION='--migrate' - - python: 3.4 - env: FRONTEND=1 INTEGRATION=1 INTEGRATION_TESTS_BUCKET=2 DJANGO=1.8 DATABASE_URL='sqlite://localhost/testdb.sqlite' MIGRATE_OPTION='--migrate' - - python: 3.5 - env: FRONTEND=1 INTEGRATION=1 INTEGRATION_TESTS_BUCKET=2 DJANGO=1.8 DATABASE_URL='sqlite://localhost/testdb.sqlite' MIGRATE_OPTION='--migrate' + env: TEST_DOCS=1 DJANGO=1.10 DATABASE_URL='sqlite://localhost/:memory:' - python: 3.6 - env: FRONTEND=1 INTEGRATION=1 INTEGRATION_TESTS_BUCKET=2 DJANGO=1.8 DATABASE_URL='sqlite://localhost/testdb.sqlite' MIGRATE_OPTION='--migrate' - - - python: 3.3 - env: FRONTEND=1 INTEGRATION=1 INTEGRATION_TESTS_BUCKET=3 DJANGO=1.8 DATABASE_URL='sqlite://localhost/testdb.sqlite' MIGRATE_OPTION='--migrate' - - python: 3.4 - env: FRONTEND=1 INTEGRATION=1 INTEGRATION_TESTS_BUCKET=3 DJANGO=1.8 DATABASE_URL='sqlite://localhost/testdb.sqlite' MIGRATE_OPTION='--migrate' + env: DJANGO=1.11 DATABASE_URL='mysql://root@127.0.0.1/djangocms_test' + - python: 3.6 + env: DJANGO=1.11 DATABASE_URL='postgres://postgres@127.0.0.1/djangocms_test' + - python: 3.6 + env: DJANGO=1.11 DATABASE_URL='postgres://postgres@127.0.0.1/djangocms_test' AUTH_USER_MODEL='emailuserapp.EmailUser' + - python: 3.6 + env: DJANGO=1.11 DATABASE_URL='postgres://postgres@127.0.0.1/djangocms_test' AUTH_USER_MODEL='customuserapp.User' - python: 3.5 - env: FRONTEND=1 INTEGRATION=1 INTEGRATION_TESTS_BUCKET=3 DJANGO=1.8 DATABASE_URL='sqlite://localhost/testdb.sqlite' MIGRATE_OPTION='--migrate' + env: DJANGO=1.10 DATABASE_URL='sqlite://localhost/:memory:' + - python: 3.6 + env: DJANGO=1.10 DATABASE_URL='mysql://root@127.0.0.1/djangocms_test' + - python: 3.6 + env: DJANGO=1.10 DATABASE_URL='postgres://postgres@127.0.0.1/djangocms_test' - python: 3.6 - env: FRONTEND=1 INTEGRATION=1 INTEGRATION_TESTS_BUCKET=3 DJANGO=1.8 DATABASE_URL='sqlite://localhost/testdb.sqlite' MIGRATE_OPTION='--migrate' + env: DJANGO=1.10 DATABASE_URL='postgres://postgres@127.0.0.1/djangocms_test' AUTH_USER_MODEL='emailuserapp.EmailUser' + - python: 3.6 + env: DJANGO=1.10 DATABASE_URL='postgres://postgres@127.0.0.1/djangocms_test' AUTH_USER_MODEL='customuserapp.User' + - python: 3.6 + env: DJANGO=1.9 DATABASE_URL='sqlite://localhost/:memory:' + - python: 3.6 + env: DJANGO=1.9 DATABASE_URL='mysql://root@127.0.0.1/djangocms_test' + - python: 3.6 + env: DJANGO=1.9 DATABASE_URL='postgres://postgres@127.0.0.1/djangocms_test' + - python: 3.6 + env: DJANGO=1.9 DATABASE_URL='postgres://postgres@127.0.0.1/djangocms_test' AUTH_USER_MODEL='emailuserapp.EmailUser' + - python: 3.6 + env: DJANGO=1.9 DATABASE_URL='postgres://postgres@127.0.0.1/djangocms_test' AUTH_USER_MODEL='customuserapp.User' + - python: 3.6 + env: DJANGO=1.8 DATABASE_URL='sqlite://localhost/:memory:' + - python: 3.6 + env: DJANGO=1.8 DATABASE_URL='mysql://root@127.0.0.1/djangocms_test' + - python: 3.6 + env: DJANGO=1.8 DATABASE_URL='postgres://postgres@127.0.0.1/djangocms_test' + - python: 3.6 + env: DJANGO=1.8 DATABASE_URL='postgres://postgres@127.0.0.1/djangocms_test' AUTH_USER_MODEL='customuserapp.User' + - python: 3.6 + env: DJANGO=1.8 DATABASE_URL='postgres://postgres@127.0.0.1/djangocms_test' AUTH_USER_MODEL='emailuserapp.EmailUser' + - python: 3.6 + env: FRONTEND=1 INTEGRATION=1 INTEGRATION_TESTS_BUCKET=1 DJANGO=1.8 DATABASE_URL='sqlite://localhost/testdb.sqlite' + - python: 3.6 + env: FRONTEND=1 INTEGRATION=1 INTEGRATION_TESTS_BUCKET=2 DJANGO=1.8 DATABASE_URL='sqlite://localhost/testdb.sqlite' + - python: 3.6 + env: FRONTEND=1 INTEGRATION=1 INTEGRATION_TESTS_BUCKET=3 DJANGO=1.8 DATABASE_URL='sqlite://localhost/testdb.sqlite' + - python: 3.6 + env: FRONTEND=1 UNIT=1 + - python: 3.6 + env: FRONTEND=1 LINT=1 + allow_failures: - python: 2.7 env: DJANGO=1.8 DATABASE_URL='mysql://root@127.0.0.1/djangocms_test' - - python: 2.7 - env: DJANGO=1.9 DATABASE_URL='mysql://root@127.0.0.1/djangocms_test' - python: 3.4 env: DJANGO=1.8 DATABASE_URL='mysql://root@127.0.0.1/djangocms_test' - - python: 3.4 - env: DJANGO=1.9 DATABASE_URL='mysql://root@127.0.0.1/djangocms_test' - python: 3.5 env: DJANGO=1.8 DATABASE_URL='mysql://root@127.0.0.1/djangocms_test' - - python: 3.5 - env: DJANGO=1.9 DATABASE_URL='mysql://root@127.0.0.1/djangocms_test' - python: 3.6 env: DJANGO=1.8 DATABASE_URL='mysql://root@127.0.0.1/djangocms_test' - - python: 3.6 - env: DJANGO=1.9 DATABASE_URL='mysql://root@127.0.0.1/djangocms_test' fast_finish: true diff --git a/cms/templatetags/cms_tags.py b/cms/templatetags/cms_tags.py index 3fd3a9725bf..8841fa37a61 100644 --- a/cms/templatetags/cms_tags.py +++ b/cms/templatetags/cms_tags.py @@ -33,6 +33,7 @@ from cms.cache.page import get_page_url_cache, set_page_url_cache from cms.models import Page, Placeholder as PlaceholderModel, CMSPlugin, StaticPlaceholder from cms.utils import get_language_from_request, get_site_id +from cms.utils.compat.dj import get_middleware from cms.utils.conf import get_cms_setting from cms.utils.i18n import force_language from cms.utils.moderator import use_draft @@ -95,7 +96,7 @@ def _get_page_by_untyped_arg(page_lookup, request, site_id): if settings.DEBUG: raise Page.DoesNotExist(body) else: - mw = getattr(settings, 'MIDDLEWARE', getattr(settings, 'MIDDLEWARE_CLASSES')) + mw = get_middleware() if getattr(settings, 'SEND_BROKEN_LINK_EMAILS', False): mail_managers(subject, body, fail_silently=True) elif 'django.middleware.common.BrokenLinkEmailsMiddleware' in mw: diff --git a/cms/tests/test_cache.py b/cms/tests/test_cache.py index fc6feb50888..86d132e1483 100644 --- a/cms/tests/test_cache.py +++ b/cms/tests/test_cache.py @@ -2,7 +2,6 @@ import time -from cms.utils.compat import DJANGO_1_10 from django.conf import settings from django.template import Context @@ -347,8 +346,6 @@ def test_expiration_cache_plugins(self): self.assertTrue('max-age=40' in response['Cache-Control'], response['Cache-Control']) # noqa cache_control1 = response['Cache-Control'] expires1 = response['Expires'] - # No longer set / needed by Django 1.11 - last_modified1 = response.get('Last-Modified', None) time.sleep(1) # This ensures that the cache has aged measurably @@ -365,10 +362,6 @@ def test_expiration_cache_plugins(self): self.assertNotEqual(response['Cache-Control'], cache_control1) # However, the Expires timestamp will be the same self.assertEqual(response['Expires'], expires1) - # No longer set / needed by Django 1.11 - if DJANGO_1_10: - # As will the Last-Modified timestamp. - self.assertEqual(response['Last-Modified'], last_modified1) plugin_pool.unregister_plugin(TTLCacheExpirationPlugin) plugin_pool.unregister_plugin(DateTimeCacheExpirationPlugin) diff --git a/cms/utils/compat/dj.py b/cms/utils/compat/dj.py index b5be019809b..4f216408c92 100644 --- a/cms/utils/compat/dj.py +++ b/cms/utils/compat/dj.py @@ -1,4 +1,6 @@ from django.apps import apps +from django.conf import settings + __all__ = ['is_installed', 'installed_apps', 'get_apps', 'get_app_paths'] @@ -25,3 +27,7 @@ def get_app_paths(): def get_apps(): return [app.models_module for app in apps.get_app_configs()] + + +def get_middleware(): + return getattr(settings, 'MIDDLEWARE', getattr(settings, 'MIDDLEWARE_CLASSES')) diff --git a/cms/wizards/forms.py b/cms/wizards/forms.py index 5e782587412..6654194a627 100755 --- a/cms/wizards/forms.py +++ b/cms/wizards/forms.py @@ -45,68 +45,65 @@ def optional_fields(self): return [f for f in self.visible_fields() if not f.field.required] +class WizardOptionInput(forms.widgets.RadioChoiceInput): + + def __init__(self, name, value, attrs, choice, index): + super(WizardOptionInput, self).__init__( + name, value, attrs, choice, index + ) + wizard = wizard_pool.get_entry(choice[0]) + self.label = force_text(choice[1]) + self.description = wizard.widget_attributes['description'] + + def __str__(self): + return self.render() + + def is_checked(self): + return self.index == 0 + + def render(self, name=None, value=None, attrs=None): + attrs = dict(self.attrs, **attrs) if attrs else self.attrs + return format_html( + '', **{ + 'tag': self.tag(attrs), 'label': self.label, 'description': self.description, + 'active_class': ' active' if self.is_checked() else '' + } + ) + + +class WizardOptionRenderer(forms.widgets.RadioFieldRenderer): + + outer_html = '{content}' + inner_html = '{choice_value}{sub_widgets}' + choice_input_class = WizardOptionInput + + def render(self): + """ + Outputs a