summaryrefslogtreecommitdiff
path: root/devel/views.py
diff options
context:
space:
mode:
Diffstat (limited to 'devel/views.py')
-rw-r--r--devel/views.py40
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