From 69104ff9d6ae770aa652e09cc85ecb2cacc7edaf Mon Sep 17 00:00:00 2001 From: Daniel W Bond Date: Sun, 11 Oct 2015 13:00:47 -0400 Subject: [PATCH] wrapped cas view to add messages, added custom messages per welcome completion --- roomlist/accounts/views.py | 57 +++++++++++++++++++++++++++++++++++++- roomlist/settings/urls.py | 3 +- 2 files changed, 58 insertions(+), 2 deletions(-) diff --git a/roomlist/accounts/views.py b/roomlist/accounts/views.py index 83bd45a..ea82e2b 100644 --- a/roomlist/accounts/views.py +++ b/roomlist/accounts/views.py @@ -3,13 +3,69 @@ from django.shortcuts import get_object_or_404 from django.http import HttpResponseForbidden from django.views.generic import ListView, DetailView, UpdateView, FormView from django.core.urlresolvers import reverse +from django.contrib import messages +from django.utils.safestring import mark_safe # third party imports from braces.views import LoginRequiredMixin +from cas.views import login as cas_login # imports from your apps from .models import Student, Major, Room from .forms import StudentUpdateForm, WelcomeNameForm +not_started = """Welcome to SRCT Roomlist! Click here to walk through + your profile setup.""" + +# 1 or 2 +started = """Welcome back to SRCT Roomlist! It looks like you're not quite finished with + setting up your profile. Click here to return to your + welcome walkthrough.""" + +# 3 +almost = """Welcome back to SRCT Roomlist! It looks like you're almost finished + with setting up your profile. Click here to return + to the last page of your welcome walkthrough.""" + +# walkthrough finished but Room is None +no_room = """It looks like you haven't set your room yet. Head to your + settings page to get that taken care of.""" + + +def custom_cas_login(request, *args, **kwargs): + response = cas_login(request, *args, **kwargs) + # returns HttpResponseRedirect + if request.user.is_authenticated(): + + if request.user.student.completedName is False: + rendered_url = reverse('welcomeName', args=[request.user.username]) + add_url = not_started % rendered_url + messages.add_message(request, messages.INFO, mark_safe(add_url)) + + elif request.user.student.completedPrivacy is False: + rendered_url = reverse('welcomePrivacy', args=[request.user.username]) + add_url = started % rendered_url + messages.add_message(request, messages.INFO, mark_safe(add_url)) + + elif request.user.student.completedMajor is False: + rendered_url = reverse('welcomeMajor', args=[request.user.username]) + add_url = started % rendered_url + messages.add_message(request, messages.INFO, mark_safe(add_url)) + + elif request.user.student.completedName is False: + rendered_url = reverse('welcomeSocial', args=[request.user.username]) + add_url = started % rendered_url + messages.add_message(request, messages.INFO, mark_safe(add_url)) + + elif request.user.student.room is None: + rendered_url = reverse('updateStudent', args=[request.user.username]) + add_url = started % rendered_url + messages.add_message(request, messages.INFO, mark_safe(add_url)) + # eventually add a reminder if the privacy is set to students + # one in ten change will display a reminder and link to change + + return response + + # details about the student class DetailStudent(LoginRequiredMixin, DetailView): model = Student @@ -252,7 +308,6 @@ class WelcomeMajor(LoginRequiredMixin, UpdateView): return super(WelcomeMajor, self).get(request, *args, **kwargs) def form_valid(self, form): - self.obj = self.get_object() self.obj.completedMajor = True diff --git a/roomlist/settings/urls.py b/roomlist/settings/urls.py index 6e0a375..15b09d1 100644 --- a/roomlist/settings/urls.py +++ b/roomlist/settings/urls.py @@ -5,6 +5,7 @@ from django.views.generic import TemplateView from django.contrib import admin from django.views.decorators.cache import cache_page + admin.autodiscover() admin.site.login = login_required(admin.site.login) @@ -32,7 +33,7 @@ urlpatterns = patterns('', url(r'^search/', include('haystack.urls'), name='search'), # login and logout - url(r'^login/', 'cas.views.login', name='login'), + url(r'^login/', 'accounts.views.custom_cas_login', name='login'), url(r'^logout/', 'cas.views.logout', name='logout'), # url(r'^login/$', 'django.contrib.auth.views.login', name='login'), -- GitLab