]> git.ozlabs.org Git - patchwork/blobdiff - apps/patchwork/forms.py
Use self.fields[field] rather than self.field when iterating form fields
[patchwork] / apps / patchwork / forms.py
index 22408d93791cf5dfd41c9d67e44541cb04160fa8..7385ced14b4337f7030f46286fe5b948b99a064a 100644 (file)
 
 
 from django.contrib.auth.models import User
-from django import newforms as forms
-
-from patchwork.models import RegistrationRequest, Patch, State, Bundle, \
-         UserProfile
-
-class RegisterForm(forms.ModelForm):
-    password = forms.CharField(widget = forms.PasswordInput)
-    email = forms.EmailField(max_length = 200)
-
-    class Meta:
-        model = RegistrationRequest
-        exclude = ['key', 'active', 'date']
-
-    def clean_email(self):
-        value = self.cleaned_data['email']
-        try:
-            User.objects.get(email = value)
-            raise forms.ValidationError(('The email address %s has ' +
-                    'has already been registered') % value)
-        except User.DoesNotExist:
-            pass
-        try:
-            RegistrationRequest.objects.get(email = value)
-            raise forms.ValidationError(('The email address %s has ' +
-                    'has already been registered') % value)
-        except RegistrationRequest.DoesNotExist:
-            pass
-        return value
-
-    def clean_username(self):
-        value = self.cleaned_data['username']
-        try:
-            User.objects.get(username = value)
-            raise forms.ValidationError(('The username %s has ' +
-                    'has already been registered') % value)
-        except User.DoesNotExist:
-            pass
-        try:
-            RegistrationRequest.objects.get(username = value)
-            raise forms.ValidationError(('The username %s has ' +
-                    'has already been registered') % value)
-        except RegistrationRequest.DoesNotExist:
-            pass
-        return value
+from django import forms
+
+from patchwork.models import Patch, State, Bundle, UserProfile
+from registration.forms import RegistrationFormUniqueEmail
+from registration.models import RegistrationProfile
+
+class RegistrationForm(RegistrationFormUniqueEmail):
+    first_name = forms.CharField(max_length = 30, required = False)
+    last_name = forms.CharField(max_length = 30, required = False)
+    username = forms.CharField(max_length=30, label=u'Username')
+    email = forms.EmailField(max_length=100, label=u'Email address')
+    password = forms.CharField(widget=forms.PasswordInput(),
+                                label='Password')
+    password1 = forms.BooleanField(required = False)
+    password2 = forms.BooleanField(required = False)
+
+    def save(self, profile_callback = None):
+        user = RegistrationProfile.objects.create_inactive_user( \
+                username = self.cleaned_data['username'],
+                password = self.cleaned_data['password'],
+                email = self.cleaned_data['email'],
+                profile_callback = profile_callback)
+        user.first_name = self.cleaned_data.get('first_name', '')
+        user.last_name = self.cleaned_data.get('last_name', '')
+        user.save()
+        return user
+
+    def clean(self):
+        return self.cleaned_data
 
 class LoginForm(forms.Form):
     username = forms.CharField(max_length = 30)
@@ -106,7 +91,7 @@ class PatchForm(forms.ModelForm):
         if not project:
            raise Exception("meep")
         super(PatchForm, self).__init__(instance = instance, *args, **kwargs)
-        self.fields['delegate'] = DelegateField(project)
+        self.fields['delegate'] = DelegateField(project, required = False)
 
     class Meta:
         model = Patch
@@ -186,7 +171,8 @@ class MultiplePatchForm(PatchForm):
     def __init__(self, project, *args, **kwargs):
         super(MultiplePatchForm, self).__init__(project = project,
                 *args, **kwargs)
-        self.fields['delegate'] = OptionalDelegateField(project = project)
+        self.fields['delegate'] = OptionalDelegateField(project = project,
+               required = False)
 
     def save(self, instance, commit = True):
         opts = instance.__class__._meta
@@ -199,7 +185,7 @@ class MultiplePatchForm(PatchForm):
             if not f.name in data:
                 continue
 
-            field = getattr(self, f.name, None)
+            field = self.fields.get(f.name, None)
             if not field:
                 continue