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/runtests.py b/runtests.py
index f4f8726..529fedf 100755
--- a/runtests.py
+++ b/runtests.py
@@ -36,11 +36,6 @@ if not settings.configured:
)
-# Django 1.7 compatibility:
-if hasattr(django, 'setup'):
- django.setup()
-
-
import logging
logging.basicConfig(
level = logging.DEBUG,
diff --git a/tos/compat.py b/tos/compat.py
index 11855c9..72f42f1 100644
--- a/tos/compat.py
+++ b/tos/compat.py
@@ -5,15 +5,35 @@ 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
+ 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()
+ from django.contrib.auth.models import User
+ return User
+
+
+def get_request_site():
+ if django.VERSION >= (1, 9):
+ from django.contrib.sites.requests import RequestSite
else:
- from django.contrib.auth.models import User
- return User
+ from django.contrib.sites.models import RequestSite
+ return RequestSite
+
+
+def get_library():
+ if django.VERSION >= (1, 9):
+ from django.template.library import Library
+ else:
+ from django.template.base import Library
+ return 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/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 *
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,