summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohan Lundberg <lundberg@nordu.net>2011-05-26 11:05:30 +0200
committerJohan Lundberg <lundberg@nordu.net>2011-05-26 11:05:30 +0200
commit650d1fce18fc1d3632dc42028d6ecdf131177096 (patch)
treed83ec0321048783bf20421ca3ed84918d4bf8050
parent4b11dfba564c8243f87c013d4e3b125f53bfcb0b (diff)
Added support mobile device templetes.
-rw-r--r--views.py36
1 files changed, 26 insertions, 10 deletions
diff --git a/views.py b/views.py
index 5ea1b3f..5d20701 100644
--- a/views.py
+++ b/views.py
@@ -1,8 +1,8 @@
from django.contrib.auth.decorators import login_required
-from django.http import Http404
from apps.changepw.models import ChangePasswordForm
from django.shortcuts import render_to_response
from django.template import RequestContext
+import re
# import your_pw_change_module
def _change_password(request, user, new_password):
@@ -47,6 +47,20 @@ def _generate_password(n):
from base64 import b64encode
return b64encode(os.urandom(int(math.ceil(0.75*n))),'-_')[:n]
+def _select_template(request, s):
+ '''
+ Takes a template string and returns that name with the string '_m' before
+ the suffix if the request comes from a mobile device.
+ 'changepw/change_password.html' -> 'changepw/change_password_m.html'
+ '''
+ p = re.compile('(iphone|ipod|blackberry|android|palm|windows\s+ce)', re.IGNORECASE)
+ if p.search(request.META['HTTP_USER_AGENT']):
+ parts = s.split('.')
+ tmpl = "%s_m.%s" % (parts[0], parts[1])
+ else:
+ tmpl = s
+ return tmpl
+
@login_required(login_url='/sso/accounts/login/')
def index(request):
'''
@@ -57,7 +71,8 @@ def index(request):
except AttributeError:
full_name = _get_username(request)
username = _get_username(request)
- return render_to_response('changepw/index.html',
+ tmpl = _select_template(request, 'changepw/index.html')
+ return render_to_response(tmpl,
{'full_name': full_name, 'username': username},
context_instance=RequestContext(request))
@@ -69,18 +84,17 @@ def change_password(request):
The function that changes the password has to be provided as func.
'''
username = _get_username(request)
+ tmpl = _select_template(request, 'changepw/change_password.html')
if request.method == 'POST':
form = ChangePasswordForm(request.POST)
if form.is_valid():
new_password = form.cleaned_data['new_password']
return_value = _change_password(request, request.user, new_password)
- return render_to_response('changepw/change_password.html',
- {'return_value': return_value},
+ return render_to_response(tmpl, {'return_value': return_value},
context_instance=RequestContext(request))
else:
form = ChangePasswordForm()
- return render_to_response('changepw/change_password.html',
- {'form': form, 'username': username},
+ return render_to_response(tmpl, {'form': form, 'username': username},
context_instance=RequestContext(request))
@login_required(login_url='/sso/accounts/login/')
@@ -91,15 +105,16 @@ def reset_password(request):
'''
password_length = 10 # chars
username = _get_username(request)
+ tmpl = _select_template(request, 'changepw/reset_password.html')
if request.method == 'POST':
new_password = _generate_password(password_length)
return_value = _reset_password(request, request.user, new_password)
- return render_to_response('changepw/reset_password.html',
+ return render_to_response(tmpl,
{'username': username, 'new_password': new_password,
'return_value': return_value},
context_instance=RequestContext(request))
else:
- return render_to_response('changepw/reset_password.html',
+ return render_to_response(tmpl,
{'username': username, 'return_value': None},
context_instance=RequestContext(request))
@@ -109,12 +124,13 @@ def change_other(request, *args):
Just passes along the request so that something can be done for that user.
'''
username = _get_username(request)
+ tmpl = _select_template(request, 'changepw/change_other.html')
if request.method == 'POST':
return_value = _change_other(request, *args)
- return render_to_response('changepw/change_other.html',
+ return render_to_response(tmpl,
{'username': username, 'return_value': return_value},
context_instance=RequestContext(request))
else:
- return render_to_response('changepw/change_other.html',
+ return render_to_response(tmpl,
{'username': username, 'return_value': None},
context_instance=RequestContext(request))