From 934bf2cc3e42fea3cccea9192d43d501adcbf01a Mon Sep 17 00:00:00 2001 From: Nicholas Serra Date: Thu, 31 Mar 2016 22:06:56 -0400 Subject: [PATCH 1/4] Django 1.9 support --- .travis.yml | 3 +++ tos/compat.py | 26 ++++++++++++++++++++------ tos/templates/tos/tos_check.html | 2 +- tos/templatetags/__init__.py | 0 tos/templatetags/compat.py | 10 ++++++++++ tos/views.py | 10 +++++----- 6 files changed, 39 insertions(+), 12 deletions(-) create mode 100644 tos/templatetags/__init__.py create mode 100644 tos/templatetags/compat.py diff --git a/.travis.yml b/.travis.yml index f350274..da8e9ba 100644 --- a/.travis.yml +++ b/.travis.yml @@ -16,6 +16,7 @@ env: - DJANGO="Django==1.6.4" - DJANGO="Django==1.7.11" - DJANGO="Django==1.8.11" + - DJANGO="Django==1.9.4" matrix: exclude: # Python 2.6 support has been dropped in Django 1.7 @@ -25,3 +26,5 @@ matrix: env: DJANGO="Django==1.4.12" - python: "2.6" env: DJANGO="Django==1.8.11" + - python: "2.6" + env: DJANGO="Django==1.9.4" diff --git a/tos/compat.py b/tos/compat.py index 11855c9..9816c72 100644 --- a/tos/compat.py +++ b/tos/compat.py @@ -5,15 +5,29 @@ from django.conf import settings def get_fk_user_model(): if django.VERSION >= (1, 5): return settings.AUTH_USER_MODEL - else: - from django.contrib.auth.models import User - return User + return django.contrib.auth.models.User def get_runtime_user_model(): if django.VERSION >= (1, 5): from django.contrib.auth import get_user_model return get_user_model() - else: - from django.contrib.auth.models import User - return User + return django.contrib.auth.models.User + + +def get_request_site(): + if django.VERSION >= (1, 9): + return django.contrib.sites.requests.RequestSite + return django.contrib.sites.models.RequestSite + + +def get_library(): + if django.VERSION >= (1, 9): + return django.template.library.Library + return django.template.base.Library + + +if django.VERSION < (1, 5): + from django.templatetags.future import url +else: + from django.template.defaulttags import url diff --git a/tos/templates/tos/tos_check.html b/tos/templates/tos/tos_check.html index ae6ace6..cf0163a 100644 --- a/tos/templates/tos/tos_check.html +++ b/tos/templates/tos/tos_check.html @@ -1,4 +1,4 @@ -{% load url from future %} +{% load url from compat %} {% if note %}

{{ note }} {% else %} diff --git a/tos/templatetags/__init__.py b/tos/templatetags/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/tos/templatetags/compat.py b/tos/templatetags/compat.py new file mode 100644 index 0000000..9e0499d --- /dev/null +++ b/tos/templatetags/compat.py @@ -0,0 +1,10 @@ +from tos.compat import url as tos_url, get_library + + +Library = get_library() +register = Library() + + +@register.tag +def url(parser, token): + return tos_url(parser, token) diff --git a/tos/views.py b/tos/views.py index bcf7b19..3846196 100644 --- a/tos/views.py +++ b/tos/views.py @@ -5,7 +5,7 @@ from django.contrib import messages from django.contrib.auth import login as auth_login from django.contrib.auth import REDIRECT_FIELD_NAME from django.contrib.auth.forms import AuthenticationForm -from django.contrib.sites.models import Site, RequestSite +from django.contrib.sites.models import Site from django.http import HttpResponseRedirect from django.shortcuts import render_to_response from django.template import RequestContext @@ -13,7 +13,7 @@ from django.views.decorators.cache import never_cache from django.views.decorators.csrf import csrf_protect from django.utils.translation import ugettext_lazy as _ -from tos.compat import get_runtime_user_model +from tos.compat import get_runtime_user_model, get_request_site from tos.models import has_user_agreed_latest_tos, TermsOfService, UserAgreement @@ -47,7 +47,7 @@ def _redirect_to(redirect_to): def check_tos(request, template_name='tos/tos_check.html', redirect_field_name=REDIRECT_FIELD_NAME,): - redirect_to = _redirect_to(request.REQUEST.get(redirect_field_name, '')) + redirect_to = _redirect_to(request.POST.get(redirect_field_name, request.GET.get(redirect_field_name, ''))) tos = TermsOfService.objects.get_current_tos() if request.method == "POST": if request.POST.get("accept", "") == "accept": @@ -83,7 +83,7 @@ def login(request, template_name='registration/login.html', authentication_form=AuthenticationForm): """Displays the login form and handles the login action.""" - redirect_to = request.REQUEST.get(redirect_field_name, '') + redirect_to = request.POST.get(redirect_field_name, request.GET.get(redirect_field_name, '')) if request.method == "POST": form = authentication_form(data=request.POST) @@ -128,7 +128,7 @@ def login(request, template_name='registration/login.html', if Site._meta.installed: current_site = Site.objects.get_current() else: - current_site = RequestSite(request) + current_site = get_request_site()(request) return render_to_response(template_name, { 'form': form, From 07b27a4b7edf92b7da200531b08d396fef5442c0 Mon Sep 17 00:00:00 2001 From: Nicholas Serra Date: Fri, 1 Apr 2016 21:01:53 -0400 Subject: [PATCH 2/4] Be more verbose --- tos/compat.py | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/tos/compat.py b/tos/compat.py index 9816c72..72f42f1 100644 --- a/tos/compat.py +++ b/tos/compat.py @@ -5,26 +5,32 @@ from django.conf import settings def get_fk_user_model(): if django.VERSION >= (1, 5): return settings.AUTH_USER_MODEL - return django.contrib.auth.models.User + from django.contrib.auth.models import User + return User def get_runtime_user_model(): if django.VERSION >= (1, 5): from django.contrib.auth import get_user_model return get_user_model() - return django.contrib.auth.models.User + from django.contrib.auth.models import User + return User def get_request_site(): if django.VERSION >= (1, 9): - return django.contrib.sites.requests.RequestSite - return django.contrib.sites.models.RequestSite + from django.contrib.sites.requests import RequestSite + else: + from django.contrib.sites.models import RequestSite + return RequestSite def get_library(): if django.VERSION >= (1, 9): - return django.template.library.Library - return django.template.base.Library + from django.template.library import Library + else: + from django.template.base import Library + return Library if django.VERSION < (1, 5): From 807dc2c0c8a407aa2c4dbb1897fed3ee9f14569b Mon Sep 17 00:00:00 2001 From: Nicholas Serra Date: Fri, 1 Apr 2016 21:19:56 -0400 Subject: [PATCH 3/4] Remove setup call --- runtests.py | 5 ----- 1 file changed, 5 deletions(-) diff --git a/runtests.py b/runtests.py index 9f2b8be..abbf0ad 100755 --- a/runtests.py +++ b/runtests.py @@ -34,11 +34,6 @@ if not settings.configured: ) -# Django 1.7 compatibility: -if hasattr(django, 'setup'): - django.setup() - - import logging logging.basicConfig( level = logging.DEBUG, From b6ce39226262b6fd6bdd7ef81abba99ed831d0db Mon Sep 17 00:00:00 2001 From: Nicholas Serra Date: Fri, 1 Apr 2016 21:36:18 -0400 Subject: [PATCH 4/4] Hack for importing tests. --- tos/tests/__init__.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/tos/tests/__init__.py b/tos/tests/__init__.py index 027f01a..80ca9a7 100644 --- a/tos/tests/__init__.py +++ b/tos/tests/__init__.py @@ -1,2 +1,5 @@ -from tos.tests.test_models import * -from tos.tests.test_views import * \ No newline at end of file +import django + +if django.VERSION < (1, 6): + from tos.tests.test_models import * + from tos.tests.test_views import *