From 4eddd86129c8150183db93f90ff241aa8a988b7f Mon Sep 17 00:00:00 2001 From: ma0 Date: Thu, 16 Mar 2017 14:30:16 -0500 Subject: [PATCH 01/12] added support for django 1.10 --- subdomains/middleware.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/subdomains/middleware.py b/subdomains/middleware.py index a88d6f2..2190586 100644 --- a/subdomains/middleware.py +++ b/subdomains/middleware.py @@ -11,7 +11,12 @@ logger = logging.getLogger(__name__) lower = operator.methodcaller('lower') -UNSET = object() +try: + from django.utils.deprecation import MiddlewareMixin +except ImportError: + MiddlewareMixin = object + +UNSET = MiddlewareMixin() class SubdomainMiddleware(object): From 7ae8473b4073df0b8fcae04fd1fc91e6ed6aa929 Mon Sep 17 00:00:00 2001 From: ma0 Date: Thu, 16 Mar 2017 14:38:47 -0500 Subject: [PATCH 02/12] modified index.rst, added 'django.contrib.sites' to installed apps --- .gitignore | 1 + docs/index.rst | 7 ++++--- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/.gitignore b/.gitignore index b8281fc..8040284 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,4 @@ build/ dist/ pip-log.txt +.idea/ diff --git a/docs/index.rst b/docs/index.rst index 897463e..6854d8b 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -34,9 +34,10 @@ To set up subdomain URL routing and reversing in a Django project: :class:`django.middleware.common.CommonMiddleware`, the subdomain middleware should come before :class:`~django.middleware.common.CommonMiddleware`. 2. Configure your ``SUBDOMAIN_URLCONFS`` dictionary in your Django settings file. -3. Ensure that you've set up your ``SITE_ID`` in your Django settings file, - and that the ``Site.domain`` attribute for that site corresponds to the - domain name where users will be accessing your site at. +3. Ensure that `django.contrib.sites` is in your INSTALLED_APPS, you've set up your + ``SITE_ID`` in your Django settings file, and that the ``Site.domain`` attribute + for that site corresponds to the domain name where users will be accessing your + site at. 4. If you want to use the subdomain-based ``{% url %}`` template tag, add ``subdomains`` to your ``INSTALLED_APPS``. From 7114ad5dca134f80c59003fee41067998d68625c Mon Sep 17 00:00:00 2001 From: ma0 Date: Thu, 16 Mar 2017 14:48:32 -0500 Subject: [PATCH 03/12] added django 1.10 to travis --- .travis.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.travis.yml b/.travis.yml index 614a144..cd52c64 100644 --- a/.travis.yml +++ b/.travis.yml @@ -11,6 +11,7 @@ env: - DJANGO='Django==1.7.*' - DJANGO='Django==1.8.*' - DJANGO='Django==1.9.*' + - DJANGO='Django==1.10.*' matrix: exclude: # Django >= 1.7 does not support Python 2.6 From 63d625a0fe22d88d22cee0baae233311b83e0718 Mon Sep 17 00:00:00 2001 From: ma0 Date: Thu, 16 Mar 2017 16:10:27 -0500 Subject: [PATCH 04/12] added test compatibility to test in django 1.10 --- .travis.yml | 2 ++ setup.py | 3 ++- subdomains/tests/__init__.py | 5 +++++ subdomains/tests/urls/api.py | 17 +++++++++++++++-- subdomains/tests/urls/application.py | 17 +++++++++++++++-- subdomains/tests/urls/default.py | 17 +++++++++++++++-- subdomains/tests/urls/marketing.py | 17 +++++++++++++++-- 7 files changed, 69 insertions(+), 9 deletions(-) diff --git a/.travis.yml b/.travis.yml index cd52c64..6d7ccff 100644 --- a/.travis.yml +++ b/.travis.yml @@ -21,6 +21,8 @@ matrix: env: DJANGO='Django==1.8.*' - python: "2.6" env: DJANGO='Django==1.9.*' + - python: "2.6" + env: DJANGO='Django==1.10.*' # Django < 1.7 does not support Python 3.4 - python: "3.4" env: DJANGO='Django==1.4.*' diff --git a/setup.py b/setup.py index 096e09a..dc836f7 100644 --- a/setup.py +++ b/setup.py @@ -19,7 +19,8 @@ def get_version(): install_requires = ['django'] tests_require = install_requires + ['mock'] -setup(name='django-subdomains', +setup( + name='django-subdomains', version=version, url='http://github.com/tkaemming/django-subdomains/', author='ted kaemming', diff --git a/subdomains/tests/__init__.py b/subdomains/tests/__init__.py index d4f41e2..fea0df9 100644 --- a/subdomains/tests/__init__.py +++ b/subdomains/tests/__init__.py @@ -17,6 +17,11 @@ 'django.middleware.common.CommonMiddleware', 'subdomains.middleware.SubdomainURLRoutingMiddleware', ), + TEMPLATES=[ + { + 'BACKEND': 'django.template.backends.django.DjangoTemplates', + } + ] ) diff --git a/subdomains/tests/urls/api.py b/subdomains/tests/urls/api.py index 6a87900..89de97f 100644 --- a/subdomains/tests/urls/api.py +++ b/subdomains/tests/urls/api.py @@ -1,7 +1,20 @@ try: - from django.conf.urls import patterns, url + from django.conf.urls import url except ImportError: - from django.conf.urls.defaults import patterns, url # noqa + from django.conf.urls.defaults import url # noqa + +try: + from django.conf.urls import patterns +except ImportError: + try: + from django.conf.urls.defaults import patterns # noqa + except ImportError: + def patterns(*args): + new_patterns = [] + for a in args: + if a: + new_patterns.append(a) + return new_patterns from subdomains.tests.urls.default import urlpatterns as default_patterns from subdomains.tests.views import view diff --git a/subdomains/tests/urls/application.py b/subdomains/tests/urls/application.py index 5e91463..1931f51 100644 --- a/subdomains/tests/urls/application.py +++ b/subdomains/tests/urls/application.py @@ -1,7 +1,20 @@ try: - from django.conf.urls import patterns, url + from django.conf.urls import url except ImportError: - from django.conf.urls.defaults import patterns, url # noqa + from django.conf.urls.defaults import url # noqa + +try: + from django.conf.urls import patterns +except ImportError: + try: + from django.conf.urls.defaults import patterns # noqa + except ImportError: + def patterns(*args): + new_patterns = [] + for a in args: + if a: + new_patterns.append(a) + return new_patterns from subdomains.tests.urls.default import urlpatterns as default_patterns from subdomains.tests.views import view diff --git a/subdomains/tests/urls/default.py b/subdomains/tests/urls/default.py index 6473707..2b27adb 100644 --- a/subdomains/tests/urls/default.py +++ b/subdomains/tests/urls/default.py @@ -1,7 +1,20 @@ try: - from django.conf.urls import patterns, url + from django.conf.urls import url except ImportError: - from django.conf.urls.defaults import patterns, url # noqa + from django.conf.urls.defaults import url # noqa + +try: + from django.conf.urls import patterns +except ImportError: + try: + from django.conf.urls.defaults import patterns # noqa + except ImportError: + def patterns(*args): + new_patterns = [] + for a in args: + if a: + new_patterns.append(a) + return new_patterns from subdomains.tests.views import view diff --git a/subdomains/tests/urls/marketing.py b/subdomains/tests/urls/marketing.py index b28562b..36cdd03 100644 --- a/subdomains/tests/urls/marketing.py +++ b/subdomains/tests/urls/marketing.py @@ -1,7 +1,20 @@ try: - from django.conf.urls import patterns, url + from django.conf.urls import url except ImportError: - from django.conf.urls.defaults import patterns, url # noqa + from django.conf.urls.defaults import url # noqa + +try: + from django.conf.urls import patterns +except ImportError: + try: + from django.conf.urls.defaults import patterns # noqa + except ImportError: + def patterns(*args): + new_patterns = [] + for a in args: + if a: + new_patterns.append(a) + return new_patterns from subdomains.tests.urls.default import urlpatterns as default_patterns From ebefc414fe8bfcafec7e33cecf8e30061c9f5ac2 Mon Sep 17 00:00:00 2001 From: ma0 Date: Thu, 16 Mar 2017 16:16:52 -0500 Subject: [PATCH 05/12] modified readme.rst with integration with travis ci --- README.rst | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.rst b/README.rst index 0ed24a4..ada34f4 100644 --- a/README.rst +++ b/README.rst @@ -9,8 +9,8 @@ Full documentation can be found here: http://django-subdomains.readthedocs.org/ Build Status ------------ -.. image:: https://secure.travis-ci.org/tkaemming/django-subdomains.png?branch=master - :target: http://travis-ci.org/tkaemming/django-subdomains +.. image:: https://secure.travis-ci.org/contraslash/django-subdomains.png?branch=master + :target: http://travis-ci.org/contraslash/django-subdomains Tested on Python 2.6, 2.7, 3.4 and 3.5 on their supported Django versions from -1.4 through 1.9. +1.4 through 1.10. From c0d47feb489a16148bddec859d9885249683e66e Mon Sep 17 00:00:00 2001 From: Lachlan Cannon Date: Tue, 23 Jan 2018 11:23:09 +1100 Subject: [PATCH 06/12] fix url imports. --- docs/index.rst | 4 ++-- subdomains/tests/tests.py | 5 ++++- subdomains/utils.py | 7 +++++-- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/docs/index.rst b/docs/index.rst index 6854d8b..28a0008 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -83,7 +83,7 @@ Resolving Named URLs by Subdomain ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Included is a :func:`subdomains.utils.reverse` function that responds similarly to -:func:`django.core.urlresolvers.reverse`, but accepts optional ``subdomain`` +:func:`django.urls.reverse`, but accepts optional ``subdomain`` and ``scheme`` arguments and does not allow a ``urlconf`` parameter. If no ``subdomain`` argument is provided, the URL will be resolved relative to @@ -110,7 +110,7 @@ the ``ROOT_URLCONF``:: >>> reverse('login', subdomain='wildcard') 'http://wildcard.example.com/login/' -If a URL cannot be resolved, a :exc:`django.core.urlresolvers.NoReverseMatch` +If a URL cannot be resolved, a :exc:`django.urls.NoReverseMatch` will be raised. Resolving Named URLs in Templates diff --git a/subdomains/tests/tests.py b/subdomains/tests/tests.py index 404b9bd..af1d04d 100644 --- a/subdomains/tests/tests.py +++ b/subdomains/tests/tests.py @@ -6,7 +6,10 @@ except ImportError: # Python 3 from urllib import parse as urlparse -from django.core.urlresolvers import NoReverseMatch, set_urlconf +try: + from django.urls import NoReverseMatch, set_urlconf +except ImportError: # Django<2.0 + from django.core.urlresolvers import NoReverseMatch, set_urlconf from django.template import Context, Template from django.test import TestCase from django.test.client import RequestFactory diff --git a/subdomains/utils.py b/subdomains/utils.py index d6dbfa0..7ee39cd 100644 --- a/subdomains/utils.py +++ b/subdomains/utils.py @@ -5,7 +5,10 @@ from urllib.parse import urlunparse from django.conf import settings -from django.core.urlresolvers import reverse as simple_reverse +try: + from django.urls import reverse as simple_reverse +except ImportError: # Django<2.0 + from django.core.urlresolvers import reverse as simple_reverse def current_site_domain(): @@ -42,7 +45,7 @@ def reverse(viewname, subdomain=None, scheme=None, args=None, kwargs=None, current_app=None): """ Reverses a URL from the given parameters, in a similar fashion to - :meth:`django.core.urlresolvers.reverse`. + :meth:`django.urls.reverse`. :param viewname: the name of URL :param subdomain: the subdomain to use for URL reversing From 00a3e01a7b0d4236aed64a97d9256cbf994fd35d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20Dlouh=C3=BD?= Date: Fri, 26 Jan 2018 20:54:37 +0100 Subject: [PATCH 07/12] add versions up to Django 2.0 to Tox and Travis --- .travis.yml | 9 +++++++++ tox.ini | 12 +++++++++--- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/.travis.yml b/.travis.yml index 6d7ccff..054f22f 100644 --- a/.travis.yml +++ b/.travis.yml @@ -12,6 +12,8 @@ env: - DJANGO='Django==1.8.*' - DJANGO='Django==1.9.*' - DJANGO='Django==1.10.*' + - DJANGO='Django==1.11.*' + - DJANGO='Django==2.0.*' matrix: exclude: # Django >= 1.7 does not support Python 2.6 @@ -23,6 +25,13 @@ matrix: env: DJANGO='Django==1.9.*' - python: "2.6" env: DJANGO='Django==1.10.*' + - python: "2.6" + env: DJANGO='Django==1.11.*' + - python: "2.6" + env: DJANGO='Django==2.0.*' + # Django >= 2.0 does not support Python 2.7 + - python: "2.7" + env: DJANGO='Django==2.0.*' # Django < 1.7 does not support Python 3.4 - python: "3.4" env: DJANGO='Django==1.4.*' diff --git a/tox.ini b/tox.ini index 63b6f45..944685d 100644 --- a/tox.ini +++ b/tox.ini @@ -1,9 +1,12 @@ [tox] envlist: py26-django1.{4,5,6} - py27-django1.{4,5,6,7,8,9,X-dev} - py34-django1.{7,8,9,X-dev} - py35-django1.{8,9,X-dev} + py27-django1.{4,5,6,7,8,9,10,11,X-dev} + py34-django1.{7,8,9,10,11,X-dev} + py35-django1.{8,9,10,11,X-dev} + + py34-django2.0 + py35-django2.0 [testenv] commands = python setup.py test @@ -19,4 +22,7 @@ deps = django1.7: Django==1.7.* django1.8: Django==1.8.* django1.9: Django==1.9.* + django1.10: Django==1.10.* + django1.11: Django==1.11.* + django2.0: Django==2.0.* django1.X-dev: https://github.com/django/django/zipball/master From c933a7dd38d6c7e358e3c01631e16e7bf51854a5 Mon Sep 17 00:00:00 2001 From: Huw Wilkins Date: Tue, 9 Aug 2016 20:43:33 +1000 Subject: [PATCH 08/12] Update the middleware to be compatible with Django 1.10. --- subdomains/middleware.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/subdomains/middleware.py b/subdomains/middleware.py index 2190586..1adc936 100644 --- a/subdomains/middleware.py +++ b/subdomains/middleware.py @@ -7,6 +7,12 @@ from subdomains.utils import get_domain +try: + from django.utils.deprecation import MiddlewareMixin +except ImportError: + # Pre Django 1.10 middleware does not require the mixin. + MiddlewareMixin = object + logger = logging.getLogger(__name__) lower = operator.methodcaller('lower') @@ -19,7 +25,7 @@ UNSET = MiddlewareMixin() -class SubdomainMiddleware(object): +class SubdomainMiddleware(MiddlewareMixin): """ A middleware class that adds a ``subdomain`` attribute to the current request. """ From 34dfb3e69d1bdd5ba82ddba0b4cf0408bb67338e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20Dlouh=C3=BD?= Date: Fri, 26 Jan 2018 22:23:26 +0100 Subject: [PATCH 09/12] fix Django 1.11 tests by adding ALLOWED_HOSTS --- subdomains/tests/__init__.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/subdomains/tests/__init__.py b/subdomains/tests/__init__.py index fea0df9..d89d0ee 100644 --- a/subdomains/tests/__init__.py +++ b/subdomains/tests/__init__.py @@ -17,6 +17,9 @@ 'django.middleware.common.CommonMiddleware', 'subdomains.middleware.SubdomainURLRoutingMiddleware', ), + ALLOWED_HOSTS=[ + '.example.com', + ], TEMPLATES=[ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', From b246731f327a36ed648af5dade45d70551fd48e6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20Dlouh=C3=BD?= Date: Fri, 26 Jan 2018 22:50:41 +0100 Subject: [PATCH 10/12] fix testing middleware settings for Django 2.0 --- subdomains/tests/__init__.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/subdomains/tests/__init__.py b/subdomains/tests/__init__.py index d89d0ee..faa25d8 100644 --- a/subdomains/tests/__init__.py +++ b/subdomains/tests/__init__.py @@ -1,6 +1,10 @@ from django.conf import settings if not settings.configured: + MIDDLEWARES = ( + 'django.middleware.common.CommonMiddleware', + 'subdomains.middleware.SubdomainURLRoutingMiddleware', + ) settings.configure( INSTALLED_APPS=( 'django.contrib.sites', @@ -13,10 +17,8 @@ }, }, SITE_ID=1, - MIDDLEWARE_CLASSES=( - 'django.middleware.common.CommonMiddleware', - 'subdomains.middleware.SubdomainURLRoutingMiddleware', - ), + MIDDLEWARE_CLASSES=MIDDLEWARES, + MIDDLEWARE=MIDDLEWARES, ALLOWED_HOSTS=[ '.example.com', ], From b6e52382397be968e0fdd2b6f96dbf8000603097 Mon Sep 17 00:00:00 2001 From: Lachlan Cannon Date: Tue, 23 Jan 2018 11:42:56 +1100 Subject: [PATCH 11/12] Bump version number. --- subdomains/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/subdomains/__init__.py b/subdomains/__init__.py index b4f5a72..ac0fca0 100644 --- a/subdomains/__init__.py +++ b/subdomains/__init__.py @@ -1 +1 @@ -__version__ = (2, 1, '0') +__version__ = (2, 2, '0') From 4096c2dc82f9f5e511e8c8f78d31e804ac028b5d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20Dlouh=C3=BD?= Date: Fri, 31 Aug 2018 00:14:26 +0200 Subject: [PATCH 12/12] test also in Django 2.1 --- .travis.yml | 9 ++++++++- tox.ini | 5 +++-- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/.travis.yml b/.travis.yml index 054f22f..0fffbc5 100644 --- a/.travis.yml +++ b/.travis.yml @@ -14,6 +14,7 @@ env: - DJANGO='Django==1.10.*' - DJANGO='Django==1.11.*' - DJANGO='Django==2.0.*' + - DJANGO='Django==2.1.*' matrix: exclude: # Django >= 1.7 does not support Python 2.6 @@ -29,16 +30,22 @@ matrix: env: DJANGO='Django==1.11.*' - python: "2.6" env: DJANGO='Django==2.0.*' + - python: "2.6" + env: DJANGO='Django==2.1.*' # Django >= 2.0 does not support Python 2.7 - python: "2.7" env: DJANGO='Django==2.0.*' - # Django < 1.7 does not support Python 3.4 + - python: "2.7" + env: DJANGO='Django==2.1.*' + # Django < 1.7 and >= 2.1 does not support Python 3.4 - python: "3.4" env: DJANGO='Django==1.4.*' - python: "3.4" env: DJANGO='Django==1.5.*' - python: "3.4" env: DJANGO='Django==1.6.*' + - python: "3.4" + env: DJANGO='Django==2.1.*' # Django < 1.8 does not support Python 3.5 - python: "3.5" env: DJANGO='Django==1.4.*' diff --git a/tox.ini b/tox.ini index 944685d..9efdf8f 100644 --- a/tox.ini +++ b/tox.ini @@ -5,8 +5,8 @@ envlist: py34-django1.{7,8,9,10,11,X-dev} py35-django1.{8,9,10,11,X-dev} - py34-django2.0 - py35-django2.0 + py34-django2.{0,1} + py35-django2.{0,1} [testenv] commands = python setup.py test @@ -25,4 +25,5 @@ deps = django1.10: Django==1.10.* django1.11: Django==1.11.* django2.0: Django==2.0.* + django2.1: Django==2.1.* django1.X-dev: https://github.com/django/django/zipball/master