diff options
Diffstat (limited to 'devel')
-rw-r--r-- | devel/views.py | 40 |
1 files changed, 25 insertions, 15 deletions
diff --git a/devel/views.py b/devel/views.py index cecfe1a1..1c89ab00 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 |