From 9a891b510c27f40f5e5ab986030f8c1934cf9442 Mon Sep 17 00:00:00 2001 From: ichuang Date: Sun, 14 Jul 2013 18:45:28 +0000 Subject: [PATCH 1/3] make compatible with django 1.4 by updating messaging --- django_cas/views.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/django_cas/views.py b/django_cas/views.py index 170ded7..0aaa66e 100644 --- a/django_cas/views.py +++ b/django_cas/views.py @@ -5,6 +5,7 @@ from django.http import get_host, HttpResponseRedirect, HttpResponseForbidden, HttpResponse from django.conf import settings +from django.contrib import messages from django.contrib.auth import REDIRECT_FIELD_NAME from django_cas.models import PgtIOU @@ -74,7 +75,7 @@ def login(request, next_page=None, required=False): next_page = _redirect_url(request) if request.user.is_authenticated(): message = "You are logged in as %s." % request.user.username - request.user.message_set.create(message=message) + messages.success(request, message) return HttpResponseRedirect(next_page) ticket = request.GET.get('ticket') service = _service_url(request, next_page) @@ -86,7 +87,7 @@ def login(request, next_page=None, required=False): auth.login(request, user) name = user.first_name or user.username message = "Login succeeded. Welcome, %s." % name - user.message_set.create(message=message) + messages.success(request, message) return HttpResponseRedirect(next_page) elif settings.CAS_RETRY_LOGIN or required: return HttpResponseRedirect(_login_url(service, ticket)) From 60a5b8e5a62e63e0d5d224a87f0b489201a0c695 Mon Sep 17 00:00:00 2001 From: ichuang Date: Thu, 29 Aug 2013 16:47:41 -0400 Subject: [PATCH 2/3] update User creation - don't use get_or_create without email --- django_cas/backends.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/django_cas/backends.py b/django_cas/backends.py index 14ff3a3..111aa05 100644 --- a/django_cas/backends.py +++ b/django_cas/backends.py @@ -131,8 +131,10 @@ def authenticate(self, ticket, service): if not username: return None - user, created = User.objects.get_or_create(username=username) - if created: + try: + user = User.objects.get(username=username) + except User.DoesNotExist: + user = User(username=username, email=username) user.set_unusable_password() if authentication_response and _CAS_USER_DETAILS_RESOLVER: From b8385969b07e6028958de2de370e2c5f7cd3cb64 Mon Sep 17 00:00:00 2001 From: Jason Zhu Date: Wed, 28 May 2014 15:06:58 +0800 Subject: [PATCH 3/3] Update views.py This fixes issues with Django 1.5. django.http.get_host() was replaced with request.get_host() --- django_cas/views.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/django_cas/views.py b/django_cas/views.py index 0aaa66e..0983a8a 100644 --- a/django_cas/views.py +++ b/django_cas/views.py @@ -3,7 +3,7 @@ from urllib import urlencode from urlparse import urljoin -from django.http import get_host, HttpResponseRedirect, HttpResponseForbidden, HttpResponse +from django.http import HttpResponseRedirect, HttpResponseForbidden, HttpResponse from django.conf import settings from django.contrib import messages from django.contrib.auth import REDIRECT_FIELD_NAME @@ -15,7 +15,7 @@ def _service_url(request, redirect_to=None): """Generates application service URL for CAS""" protocol = ('http://', 'https://')[request.is_secure()] - host = get_host(request) + host = request.get_host() service = protocol + host + request.path if redirect_to: if '?' in service: @@ -38,7 +38,7 @@ def _redirect_url(request): else: next = request.META.get('HTTP_REFERER', settings.CAS_REDIRECT_URL) prefix = (('http://', 'https://')[request.is_secure()] + - get_host(request)) + request.get_host()) if next.startswith(prefix): next = next[len(prefix):] return next @@ -63,7 +63,7 @@ def _logout_url(request, next_page=None): url = urljoin(settings.CAS_SERVER_URL, 'logout') if next_page: protocol = ('http://', 'https://')[request.is_secure()] - host = get_host(request) + host = request.get_host() url += '?' + urlencode({'url': protocol + host + next_page}) return url