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
This commit is contained in:
medmunds
2015-01-16 16:17:31 -08:00
parent 00a0a1fde6
commit 8ab36d2cd0
8 changed files with 34 additions and 28 deletions

View File

@@ -38,9 +38,13 @@ matrix:
env: DJANGO=django==1.7 env: DJANGO=django==1.7
- python: "pypy" - python: "pypy"
env: DJANGO=django==1.7 env: DJANGO=django==1.7
# Django 1.8beta: tbd... # Django 1.8alpha: "Python 2.7 or above"
# - python: "2.7" - python: "2.7"
# env: DJANGO=https://www.djangoproject.com/download/1.8b1/tarball/ 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: install:
- pip install -q $DJANGO - pip install -q $DJANGO
- pip install . - pip install .

View File

@@ -30,8 +30,8 @@ package. It includes:
via Django signals via Django signals
* An optional Django admin interface * An optional Django admin interface
Djrill is released under the BSD license. It is tested against Django 1.3---1.7 Djrill is released under the BSD license. It is tested against Django 1.3--1.8
(including Python 3 and PyPy support with Django 1.5+). (including Python 3 with Django 1.6+, and PyPy support with Django 1.5+).
.. END shared-intro .. END shared-intro

View File

@@ -39,19 +39,19 @@ class DjrillAdminSite(AdminSite):
"""Add our custom views to the admin urlconf.""" """Add our custom views to the admin urlconf."""
urls = super(DjrillAdminSite, self).get_urls() urls = super(DjrillAdminSite, self).get_urls()
try: try:
from django.conf.urls import include, patterns, url from django.conf.urls import include, url
except ImportError: except ImportError:
# Django 1.3 # Django 1.3
#noinspection PyDeprecation #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: for path, view, name, display_name in self.custom_views:
urls += patterns('', urls += [
url(r'^%s$' % path, self.admin_view(view), name=name), url(r'^%s$' % path, self.admin_view(view), name=name)
) ]
for path, view, name in self.custom_urls: for path, view, name in self.custom_urls:
urls += patterns('', urls += [
url(r'^%s$' % path, self.admin_view(view), name=name), url(r'^%s$' % path, self.admin_view(view), name=name)
) ]
return urls return urls

View File

@@ -1,16 +1,18 @@
try: try:
from django.conf.urls import include, patterns, url from django.conf.urls import include, url
except ImportError: except ImportError:
# Django 1.3 # 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 django.contrib import admin
from djrill import DjrillAdminSite from djrill import DjrillAdminSite
# Set up the DjrillAdminSite as suggested in the docs
admin.site = DjrillAdminSite() admin.site = DjrillAdminSite()
admin.autodiscover() admin.autodiscover()
urlpatterns = patterns('', urlpatterns = [
url(r'^admin/', include(admin.site.urls)), url(r'^admin/', include(admin.site.urls)),
) ]

View File

@@ -7,6 +7,8 @@ import six
from djrill.tests.mock_backend import DjrillBackendMockAPITestCase from djrill.tests.mock_backend import DjrillBackendMockAPITestCase
from .utils import override_settings
def reset_admin_site(): def reset_admin_site():
"""Return the Django admin globals to their original state""" """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 del sys.modules['djrill.admin'] # force autodiscover to re-import
@override_settings(ROOT_URLCONF='djrill.tests.admin_urls')
class DjrillAdminTests(DjrillBackendMockAPITestCase): class DjrillAdminTests(DjrillBackendMockAPITestCase):
"""Test the Djrill admin site""" """Test the Djrill admin site"""
# These urls set up the DjrillAdminSite as suggested in the readme
urls = 'djrill.tests.admin_urls'
@classmethod @classmethod
def setUpClass(cls): def setUpClass(cls):
super(DjrillAdminTests, cls).setUpClass()
# Other test cases may muck with the Django admin site globals, # Other test cases may muck with the Django admin site globals,
# so return it to the default state before loading test_admin_urls # so return it to the default state before loading test_admin_urls
reset_admin_site() reset_admin_site()

View File

@@ -1,13 +1,11 @@
try: try:
from django.conf.urls import patterns, url from django.conf.urls import url
except ImportError: except ImportError:
from django.conf.urls.defaults import patterns, url from django.conf.urls.defaults import url
from .views import DjrillWebhookView from .views import DjrillWebhookView
urlpatterns = patterns( urlpatterns = [
'',
url(r'^webhook/$', DjrillWebhookView.as_view(), name='djrill_webhook'), url(r'^webhook/$', DjrillWebhookView.as_view(), name='djrill_webhook'),
) ]

View File

@@ -3,6 +3,7 @@ Release Notes
Version 1.4 (development): Version 1.4 (development):
* Django 1.8 alpha support
Version 1.3: Version 1.3:

View File

@@ -84,10 +84,10 @@ If you want to enable the Djrill admin interface, edit your base :file:`urls.py`
admin.autodiscover() admin.autodiscover()
... ...
urlpatterns = patterns('', urlpatterns = [
... ...
url(r'^admin/', include(admin.site.urls)), 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 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`: by the django.contrib.admin app in your :file:`settings.py`: