Browse Source

Refactored code for getting the current logged in user

pull/160/head
Mike Olund 8 years ago
parent
commit
6753928434
1 changed files with 23 additions and 17 deletions
  1. +23
    -17
      edivorce/apps/core/views/main.py

+ 23
- 17
edivorce/apps/core/views/main.py View File

@ -2,6 +2,7 @@ from django.conf import settings
from django.shortcuts import render, redirect
from django.utils import timezone
from ..decorators import bceid_required
import datetime
from ..models import BceidUser
from ..utils.user_response import get_responses_from_db, get_responses_from_db_grouped_by_steps, \
get_responses_from_session, copy_session_to_db
@ -51,10 +52,11 @@ def login(request):
if guid is None:
return render(request, 'localdev/debug.html')
user, created = BceidUser.objects.get_or_create(user_guid=guid)
user = __get_bceid_user(request)
user.last_login = timezone.now()
user.save()
if timezone.now() - user.last_login > datetime.timedelta(minutes=1):
user.last_login = timezone.now()
user.save()
copy_session_to_db(request, user)
@ -81,7 +83,8 @@ def prequalification(request, step):
if not request.bceid_user.is_authenticated:
responses_dict = get_responses_from_session(request)
else:
user = BceidUser.objects.get(user_guid=request.bceid_user.guid)
user = __get_bceid_user(request)
responses_dict = get_responses_from_db(user)
return render(request, template_name=template, context=responses_dict)
@ -102,12 +105,7 @@ def question(request, step):
For review page, use response grouped by step to render page
"""
template = 'question/%s.html' % step
# get the BceidUser record matching the BCeID login from the db
try:
user = BceidUser.objects.get(user_guid=request.bceid_user.guid)
except ObjectDoesNotExist:
return redirect(settings.FORCE_SCRIPT_NAME[:-1] + '/login')
user = __get_bceid_user(request)
if step == "11_review":
responses_dict = get_responses_from_db_grouped_by_steps(user)
@ -127,13 +125,7 @@ def overview(request):
If user responded to questions for certain step,
mark that step as "Started" otherwise "Not started"
"""
# get the BceidUser record matching the BCeID login from the db
try:
user = BceidUser.objects.get(user_guid=request.bceid_user.guid)
except ObjectDoesNotExist:
return redirect(settings.FORCE_SCRIPT_NAME[:-1] + '/login')
user = __get_bceid_user(request)
responses_dict = get_responses_from_db_grouped_by_steps(user)
# To Show whether user has started to respond questions in each step
started_dict = {}
@ -144,3 +136,17 @@ def overview(request):
started_dict[step] = "Started"
started_dict['active_page'] = 'overview'
return render(request, 'overview.html', context=started_dict)
def __get_bceid_user(request):
user, created = BceidUser.objects.get_or_create(user_guid=request.bceid_user.guid)
# update the last_login timestamp if it was more than 2 hours ago
# this ensures that it gets updated for users who bypass the /login url with a direct link
if user.last_login is None or timezone.now() - user.last_login > datetime.timedelta(hours=2):
user.last_login = timezone.now()
user.save()
return user

Loading…
Cancel
Save