diff options
-rw-r--r-- | views.py | 36 |
1 files changed, 26 insertions, 10 deletions
@@ -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)) |