From 972071e370cdc0d2798c524e6a4b09681cc727af Mon Sep 17 00:00:00 2001 From: Dan Collins Date: Mon, 23 Jul 2018 13:01:58 -0400 Subject: [PATCH 1/2] Add support for Django 2.1, drop support for Django < 1.11 Django 1.11 deprecated the django.contrib.auth.views.logout function-based view, which django-oidc-provider relied on. This patchset instead subclasses the new LogoutView. LogoutView was introduced in Django 1.11. logout() was deprecated in 1.11 and removed in 2.1. Accordingly, this patch adds Django 2.1 to CI and removes 1.8, 1.9, and 1.10. Resolves #258 --- .travis.yml | 8 ++++---- oidc_provider/tests/app/urls.py | 4 ++-- oidc_provider/views.py | 9 +++++---- tox.ini | 12 +++++------- 4 files changed, 16 insertions(+), 17 deletions(-) diff --git a/.travis.yml b/.travis.yml index 83b8e4a..13c86d5 100644 --- a/.travis.yml +++ b/.travis.yml @@ -9,16 +9,16 @@ matrix: - ENV=docs - python: 2.7 env: - - ENV=py27-django18,py27-django19,py27-django110,py27-django111 + - ENV=py27-django111 - python: 3.4 env: - - ENV=py34-django18,py34-django19,py34-django110,py34-django111,py34-django20 + - ENV=py34-django111,py34-django20,py34-django21 - python: 3.5 env: - - ENV=py35-django18,py35-django19,py35-django110,py35-django111,py35-django20 + - ENV=py35-django111,py35-django20,py35-django21 - python: 3.6 env: - - ENV=py36-django18,py36-django19,py36-django110,py36-django111,py36-django20 + - ENV=py36-django111,py36-django20,py36-django21 script: - tox -e $ENV after_success: diff --git a/oidc_provider/tests/app/urls.py b/oidc_provider/tests/app/urls.py index e50bdfe..cbaadf5 100644 --- a/oidc_provider/tests/app/urls.py +++ b/oidc_provider/tests/app/urls.py @@ -10,9 +10,9 @@ from django.views.generic import TemplateView urlpatterns = [ url(r'^$', TemplateView.as_view(template_name='home.html'), name='home'), url(r'^accounts/login/$', - auth_views.login, {'template_name': 'accounts/login.html'}, name='login'), + auth_views.LoginView.as_view(template_name='accounts/login.html'), name='login'), url(r'^accounts/logout/$', - auth_views.logout, {'template_name': 'accounts/logout.html'}, name='logout'), + auth_views.LogoutView.as_view(template_name='accounts/logout.html'), name='logout'), url(r'^openid/', include('oidc_provider.urls', namespace='oidc_provider')), url(r'^admin/', admin.site.urls), ] diff --git a/oidc_provider/views.py b/oidc_provider/views.py index 17965f4..142313e 100644 --- a/oidc_provider/views.py +++ b/oidc_provider/views.py @@ -12,7 +12,7 @@ except ImportError: from Cryptodome.PublicKey import RSA from django.contrib.auth.views import ( redirect_to_login, - logout, + LogoutView, ) try: from django.urls import reverse @@ -326,8 +326,8 @@ class JwksView(View): return response -class EndSessionView(View): - def get(self, request, *args, **kwargs): +class EndSessionView(LogoutView): + def dispatch(self, request, *args, **kwargs): id_token_hint = request.GET.get('id_token_hint', '') post_logout_redirect_uri = request.GET.get('post_logout_redirect_uri', '') state = request.GET.get('state', '') @@ -361,7 +361,8 @@ class EndSessionView(View): next_page=next_page ) - return logout(request, next_page=next_page) + self.next_page = next_page + return super(EndSessionView, self).dispatch(request, *args, **kwargs) class CheckSessionIframeView(View): diff --git a/tox.ini b/tox.ini index 286cd82..42f64ff 100644 --- a/tox.ini +++ b/tox.ini @@ -1,10 +1,10 @@ [tox] envlist= docs, - py27-django{18,19,110,111}, - py34-django{18,19,110,111,20}, - py35-django{18,19,110,111,20}, - py36-django{18,19,110,111,20}, + py27-django{111}, + py34-django{111,20,21}, + py35-django{111,20,21}, + py36-django{111,20,21}, [testenv] changedir= @@ -16,11 +16,9 @@ deps = pytest-django pytest-flake8 pytest-cov - django18: django>=1.8,<1.9 - django19: django>=1.9,<1.10 - django110: django>=1.10,<1.11 django111: django>=1.11,<1.12 django20: django>=2.0,<2.1 + django21: django>=2.1,<2.2 commands = pytest --flake8 --cov=oidc_provider {posargs} From 85ca08353284da43fe8aba661830aa005bd08955 Mon Sep 17 00:00:00 2001 From: Dan Collins Date: Tue, 24 Jul 2018 10:11:03 -0400 Subject: [PATCH 2/2] Remove Python 3.4, since it is intermittently failing in travis --- .travis.yml | 3 --- setup.py | 1 - tox.ini | 1 - 3 files changed, 5 deletions(-) diff --git a/.travis.yml b/.travis.yml index 13c86d5..5fa9ac7 100644 --- a/.travis.yml +++ b/.travis.yml @@ -10,9 +10,6 @@ matrix: - python: 2.7 env: - ENV=py27-django111 - - python: 3.4 - env: - - ENV=py34-django111,py34-django20,py34-django21 - python: 3.5 env: - ENV=py35-django111,py35-django20,py35-django21 diff --git a/setup.py b/setup.py index 92bb545..e383232 100644 --- a/setup.py +++ b/setup.py @@ -30,7 +30,6 @@ setup( 'Programming Language :: Python :: 2', 'Programming Language :: Python :: 2.7', 'Programming Language :: Python :: 3', - 'Programming Language :: Python :: 3.4', 'Programming Language :: Python :: 3.5', 'Programming Language :: Python :: 3.6', 'Topic :: Internet :: WWW/HTTP', diff --git a/tox.ini b/tox.ini index 42f64ff..adb5e68 100644 --- a/tox.ini +++ b/tox.ini @@ -2,7 +2,6 @@ envlist= docs, py27-django{111}, - py34-django{111,20,21}, py35-django{111,20,21}, py36-django{111,20,21},