From ac2a253d9faadb81cbc2b4e6a1de1b4bfaac69f0 Mon Sep 17 00:00:00 2001 From: Andrew Williams Date: Sat, 27 Feb 2010 17:38:12 +0000 Subject: [PATCH] Added a bit of form validation --- sso/forms.py | 20 +++++++++++++++----- sso/views.py | 1 - 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/sso/forms.py b/sso/forms.py index 00fe0f0..b728650 100644 --- a/sso/forms.py +++ b/sso/forms.py @@ -1,14 +1,24 @@ from django import forms -from sso.models import ServiceAccount +from sso.models import ServiceAccount, Service class EveAPIForm(forms.Form): user_id = forms.CharField(max_length=10) api_key = forms.CharField(max_length=100) description = forms.CharField(max_length=100) -class ServiceAccountForm(forms.ModelForm): - class Meta: - model = ServiceAccount - exclude = ['user', 'active'] +class ServiceUsernameField(forms.CharField): + def clean(self, request, initial=None): + field = super(ServiceUsernameField, self).clean(request) + try: + acc = ServiceAccount.objects.get(username=field) + except ServiceAccount.DoesNotExist: + return field + else: + raise forms.ValidationError("That username is already taken") + +class ServiceAccountForm(forms.Form): + service = forms.ModelChoiceField(queryset=Service.objects.filter(active=1), empty_label="Select A Service... ") + username = ServiceUsernameField(min_length=4,max_length=50) + password = forms.CharField(label = u'Password',widget = forms.PasswordInput(render_value=False)) diff --git a/sso/views.py b/sso/views.py index 4145a29..3eadda3 100644 --- a/sso/views.py +++ b/sso/views.py @@ -96,7 +96,6 @@ def service_add(request): acc.password = form.cleaned_data['password'] acc.save() - return HttpResponseRedirect(reverse('sso.views.profile')) # Redirect after POST else: form = ServiceAccountForm() # An unbound form