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.shortcuts import render, redirect
from django.utils import timezone from django.utils import timezone
from ..decorators import bceid_required from ..decorators import bceid_required
import datetime
from ..models import BceidUser from ..models import BceidUser
from ..utils.user_response import get_responses_from_db, get_responses_from_db_grouped_by_steps, \ from ..utils.user_response import get_responses_from_db, get_responses_from_db_grouped_by_steps, \
get_responses_from_session, copy_session_to_db get_responses_from_session, copy_session_to_db
@ -51,10 +52,11 @@ def login(request):
if guid is None: if guid is None:
return render(request, 'localdev/debug.html') 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) copy_session_to_db(request, user)
@ -81,7 +83,8 @@ def prequalification(request, step):
if not request.bceid_user.is_authenticated: if not request.bceid_user.is_authenticated:
responses_dict = get_responses_from_session(request) responses_dict = get_responses_from_session(request)
else: else:
user = BceidUser.objects.get(user_guid=request.bceid_user.guid)
user = __get_bceid_user(request)
responses_dict = get_responses_from_db(user) responses_dict = get_responses_from_db(user)
return render(request, template_name=template, context=responses_dict) 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 For review page, use response grouped by step to render page
""" """
template = 'question/%s.html' % step 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": if step == "11_review":
responses_dict = get_responses_from_db_grouped_by_steps(user) 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, If user responded to questions for certain step,
mark that step as "Started" otherwise "Not started" 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) responses_dict = get_responses_from_db_grouped_by_steps(user)
# To Show whether user has started to respond questions in each step # To Show whether user has started to respond questions in each step
started_dict = {} started_dict = {}
@ -144,3 +136,17 @@ def overview(request):
started_dict[step] = "Started" started_dict[step] = "Started"
started_dict['active_page'] = 'overview' started_dict['active_page'] = 'overview'
return render(request, 'overview.html', context=started_dict) 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