from django.shortcuts import render_to_response #!/usr/bin/env python # -*- coding: UTF-8 -*- """ Title: Views for resume access management Author: Will Hardy Project: TheProfessional (resume module) Date: September 2007 Test Suite: ../manage.py test resume $Revision: 207 $ Copyright: Will Hardy 2007, released under GPL version 3 (see licence.txt) Description: """ from django.core.urlresolvers import reverse from django.http import Http404, HttpResponseRedirect from django.template import RequestContext, Context from theprofessional.resume.models import Visitor, ResumeView from hardytools.content.models import Page, SpecialPage from hardytools.content.views import page def resume(request, passphrase=None): """ Show a resume if the given passphrase is adequate. """ # A directly given passphrase (i.e. not POSTed or stored) requires a redirect, # to avoid it being revealed in referer information. # WARNING: people without cookies may be adversely affected if passphrase: redirect = True else: redirect = False # For testing only, clear removes session variable if passphrase == 'clear': request.session['passphrase'] = None # 1a. Check if there is a session variable already session_passphrase = request.session.get('passphrase', None) # 1b. If we have already saved a passphrase, use it again if session_passphrase: passphrase = session_passphrase else: # If we still don't have a passphrase, try looking for posted variables if passphrase is None: passphrase = request.POST.get('passphrase', None) # If we still don't have a passphrase, ask the user again if passphrase is None: email_address = SpecialPage.getPageText('email address') or "" context = dict(email_address=email_address) return render_to_response('resume/enter-passphrase.html', context, RequestContext(request)) # 2. Find the relevant visitor for our passphrase try: visitor = Visitor.objects.get(passphrase=passphrase) except Visitor.DoesNotExist: # If there is no such visitor, we have a bad passphrase, tell the user about it email_address = SpecialPage.getPageText('email address') or "" context = dict(passphrase=passphrase, email_address=email_address) return render_to_response('resume/enter-passphrase.html', context, RequestContext(request)) # 3. Set a cookie so that this wont have to be done again request.session['passphrase'] = passphrase # 4. Make a note of the viewing try: ip_address = request.META['REMOTE_ADDR'] except Exception: ip_address = '' ResumeView(visitor=visitor,ip_address=ip_address).save() # 5. Send an email? (future) # 6a. Do a redirection if required if redirect: return HttpResponseRedirect(reverse('resume_view')) # 6b. Show the resume (html, using custom template for this site) cv_page = SpecialPage.getPage("cv") if cv_page: return page(request, cv_page.name) else: #try: resume_template = 'resume/resume.html' context = prepareContext() return render_to_response(resume_template, context, RequestContext(request)) #except Exception: #raise Http404 def prepareContext(): page_dict = {} page_dict['personal_details'] = SpecialPage.getPageText("resume: personal details") page_dict['education'] = SpecialPage.getPageText("resume: education") page_dict['languages'] = SpecialPage.getPageText("resume: languages") page_dict['software_skills'] = SpecialPage.getPageText("resume: software skills") page_dict['achievements'] = SpecialPage.getPageText("resume: achievements") page_dict['work_experience'] = SpecialPage.getPageText("resume: work experience") page_dict['interests'] = SpecialPage.getPageText("resume: interests") page_dict['general_skills'] = SpecialPage.getPageText("resume: general skills") page_dict['references'] = SpecialPage.getPageText("resume: references") page_dict['publications'] = SpecialPage.getPageText("resume: publications") page_dict['reading'] = SpecialPage.getPageText("resume: reading") context = Context() context['resume'] = page_dict return context