From 8ab36d2cd0b22b933796bf9cb76a6acec07fd591 Mon Sep 17 00:00:00 2001 From: medmunds Date: Fri, 16 Jan 2015 16:17:31 -0800 Subject: [PATCH] Django 1.8 alpha 1 support * Test on Python 2.7, 3.4, pypy. * Call super.setUpClass in DjrillAdminTests. https://docs.djangoproject.com/en/dev/releases/1.8/#overriding-setupclass-teardownclass-in-test-cases Also clear up some new PendingDeprecationWarnings, where the changes can easily remain compatible back to Django 1.3: * Remove deprecated django.conf.urls.patterns. (And match Django recommendations in our docs.) https://docs.djangoproject.com/en/dev/releases/1.8/#django-conf-urls-patterns * Remove deprecated SimpleTestCase.urls. (We've already back-ported @override_settings for testing older Django versions.) https://docs.djangoproject.com/en/dev/releases/1.8/#django-test-simpletestcase-urls --- .travis.yml | 10 +++++++--- README.rst | 4 ++-- djrill/__init__.py | 16 ++++++++-------- djrill/tests/admin_urls.py | 10 ++++++---- djrill/tests/test_admin.py | 7 ++++--- djrill/urls.py | 10 ++++------ docs/history.rst | 1 + docs/installation.rst | 4 ++-- 8 files changed, 34 insertions(+), 28 deletions(-) diff --git a/.travis.yml b/.travis.yml index 2eda015..034c122 100644 --- a/.travis.yml +++ b/.travis.yml @@ -38,9 +38,13 @@ matrix: env: DJANGO=django==1.7 - python: "pypy" env: DJANGO=django==1.7 - # Django 1.8beta: tbd... - # - python: "2.7" - # env: DJANGO=https://www.djangoproject.com/download/1.8b1/tarball/ + # Django 1.8alpha: "Python 2.7 or above" + - python: "2.7" + env: DJANGO=https://www.djangoproject.com/download/1.8a1/tarball/ + - python: "3.4" + env: DJANGO=https://www.djangoproject.com/download/1.8a1/tarball/ + - python: "pypy" + env: DJANGO=https://www.djangoproject.com/download/1.8a1/tarball/ install: - pip install -q $DJANGO - pip install . diff --git a/README.rst b/README.rst index b8e061e..85fa8a2 100644 --- a/README.rst +++ b/README.rst @@ -30,8 +30,8 @@ package. It includes: via Django signals * An optional Django admin interface -Djrill is released under the BSD license. It is tested against Django 1.3---1.7 -(including Python 3 and PyPy support with Django 1.5+). +Djrill is released under the BSD license. It is tested against Django 1.3--1.8 +(including Python 3 with Django 1.6+, and PyPy support with Django 1.5+). .. END shared-intro diff --git a/djrill/__init__.py b/djrill/__init__.py index 4d8b4e8..cde709d 100644 --- a/djrill/__init__.py +++ b/djrill/__init__.py @@ -39,19 +39,19 @@ class DjrillAdminSite(AdminSite): """Add our custom views to the admin urlconf.""" urls = super(DjrillAdminSite, self).get_urls() try: - from django.conf.urls import include, patterns, url + from django.conf.urls import include, url except ImportError: # Django 1.3 #noinspection PyDeprecation - from django.conf.urls.defaults import include, patterns, url + from django.conf.urls.defaults import include, url for path, view, name, display_name in self.custom_views: - urls += patterns('', - url(r'^%s$' % path, self.admin_view(view), name=name), - ) + urls += [ + url(r'^%s$' % path, self.admin_view(view), name=name) + ] for path, view, name in self.custom_urls: - urls += patterns('', - url(r'^%s$' % path, self.admin_view(view), name=name), - ) + urls += [ + url(r'^%s$' % path, self.admin_view(view), name=name) + ] return urls diff --git a/djrill/tests/admin_urls.py b/djrill/tests/admin_urls.py index 4fea6af..c8e5192 100644 --- a/djrill/tests/admin_urls.py +++ b/djrill/tests/admin_urls.py @@ -1,16 +1,18 @@ try: - from django.conf.urls import include, patterns, url + from django.conf.urls import include, url except ImportError: # Django 1.3 - from django.conf.urls.defaults import include, patterns, url + from django.conf.urls.defaults import include, url from django.contrib import admin from djrill import DjrillAdminSite +# Set up the DjrillAdminSite as suggested in the docs + admin.site = DjrillAdminSite() admin.autodiscover() -urlpatterns = patterns('', +urlpatterns = [ url(r'^admin/', include(admin.site.urls)), -) +] diff --git a/djrill/tests/test_admin.py b/djrill/tests/test_admin.py index 95a7978..e1ce40a 100644 --- a/djrill/tests/test_admin.py +++ b/djrill/tests/test_admin.py @@ -7,6 +7,8 @@ import six from djrill.tests.mock_backend import DjrillBackendMockAPITestCase +from .utils import override_settings + def reset_admin_site(): """Return the Django admin globals to their original state""" @@ -15,14 +17,13 @@ def reset_admin_site(): del sys.modules['djrill.admin'] # force autodiscover to re-import +@override_settings(ROOT_URLCONF='djrill.tests.admin_urls') class DjrillAdminTests(DjrillBackendMockAPITestCase): """Test the Djrill admin site""" - # These urls set up the DjrillAdminSite as suggested in the readme - urls = 'djrill.tests.admin_urls' - @classmethod def setUpClass(cls): + super(DjrillAdminTests, cls).setUpClass() # Other test cases may muck with the Django admin site globals, # so return it to the default state before loading test_admin_urls reset_admin_site() diff --git a/djrill/urls.py b/djrill/urls.py index 14bc25c..a013c67 100644 --- a/djrill/urls.py +++ b/djrill/urls.py @@ -1,13 +1,11 @@ try: - from django.conf.urls import patterns, url + from django.conf.urls import url except ImportError: - from django.conf.urls.defaults import patterns, url + from django.conf.urls.defaults import url from .views import DjrillWebhookView -urlpatterns = patterns( - '', - +urlpatterns = [ url(r'^webhook/$', DjrillWebhookView.as_view(), name='djrill_webhook'), -) +] diff --git a/docs/history.rst b/docs/history.rst index 29027e7..7c89699 100644 --- a/docs/history.rst +++ b/docs/history.rst @@ -3,6 +3,7 @@ Release Notes Version 1.4 (development): +* Django 1.8 alpha support Version 1.3: diff --git a/docs/installation.rst b/docs/installation.rst index 59b82cc..e8e0649 100644 --- a/docs/installation.rst +++ b/docs/installation.rst @@ -84,10 +84,10 @@ If you want to enable the Djrill admin interface, edit your base :file:`urls.py` admin.autodiscover() ... - urlpatterns = patterns('', + urlpatterns = [ ... url(r'^admin/', include(admin.site.urls)), - ) + ] If you are on **Django 1.7 or later,** you will also need to change the config used by the django.contrib.admin app in your :file:`settings.py`: