From 851e6d55be41b1053d5fdb7326aa0846638992fc Mon Sep 17 00:00:00 2001 From: Dusty Phillips Date: Tue, 16 Sep 2008 21:12:26 -0400 Subject: port profile_form to newforms --- devel/views.py | 40 +++++++++++++++++++++++++--------------- templates/devel/profile.html | 19 ++++--------------- 2 files changed, 29 insertions(+), 30 deletions(-) diff --git a/devel/views.py b/devel/views.py index cecfe1a..1c89ab0 100644 --- a/devel/views.py +++ b/devel/views.py @@ -1,7 +1,7 @@ +from django import forms from django.http import HttpResponse, HttpResponseRedirect from django.contrib.auth.models import User -from django.core import validators -from archweb_dev.main.utils import render_response, validate +from archweb_dev.main.utils import render_response from archweb_dev.main.models import Package, Todolist, TodolistPkg from archweb_dev.main.models import Arch, Repo from archweb_dev.main.models import UserProfile, News, Donor, Mirror @@ -62,23 +62,33 @@ def change_notify(request): maint.get_profile().save() return HttpResponseRedirect('/devel/') +class ProfileForm(forms.Form): + email = forms.EmailField('E-mail Address') + passwd1 = forms.CharField('New Password', required=False, + widget=forms.PasswordInput) + passwd2 = forms.CharField('Confirm Password', required=False, + widget=forms.PasswordInput) + + def clean(self): + if ('passwd1' not in self.cleaned_data and + 'passwd2' not in self.cleaned_data): + return self.cleaned_data + + if self.cleaned_data['passwd1'] != self.cleaned_data['passwd2']: + raise forms.ValidationError('Passwords do not match') + return self.cleaned_data + def change_profile(request): - errors = {} if request.POST: - passwd1, passwd2 = request.POST['passwd'], request.POST['passwd2'] - email = request.POST['email'] - # validate - if passwd1 != passwd2: - errors['password'] = [' Passwords do not match. '] - validate(errors, 'Email', email, validators.isValidEmail, False, request) - # apply changes - if not errors: - request.user.email = email - if passwd1: - request.user.set_password(passwd1) + form = ProfileForm(request.POST) + if form.is_valid(): + request.user.email = form.cleaned_data['email'] + request.user.set_password(form.cleaned_data['passwd1']) request.user.save() return HttpResponseRedirect('/devel/') - return render_response(request, 'devel/profile.html', {'errors':errors,'email':request.user.email}) + else: + form = ProfileForm(initial={'email': request.user.email}) + return render_response(request, 'devel/profile.html', {'form': form}) def siteindex(request): # get the most recent 10 news items diff --git a/templates/devel/profile.html b/templates/devel/profile.html index 6083735..5b5a586 100644 --- a/templates/devel/profile.html +++ b/templates/devel/profile.html @@ -1,27 +1,16 @@ -{% load validation %} {% extends "base.html" %} {% block content %}

Developer Profile

- {% if errors %} - {% print_errors errors %} - {% endif %}
- + - - - - - - - - - - + + {{form}} + -- cgit v1.2.3-24-g4f1b
Username:Username: {{ user.username }}
Email Address:
New Password:
Confirm Password: