]> git.ozlabs.org Git - patchwork/commitdiff
forms.MultiplePatchForm: remove no-change fields on clean()
authorJeremy Kerr <jk@ozlabs.org>
Thu, 2 Sep 2010 10:47:38 +0000 (18:47 +0800)
committerJeremy Kerr <jk@ozlabs.org>
Thu, 2 Sep 2010 11:50:34 +0000 (19:50 +0800)
We need to remove no-change fields, as newer versions of django are
checking for proper types on validation.

Fixes MultipleUpdateTest.

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
apps/patchwork/forms.py

index f78a105fa5b200c3d4f59c20dad9187633c4021b..2c137e3c027618e12ff223755272f4451813689e 100644 (file)
@@ -186,6 +186,21 @@ class MultiplePatchForm(PatchForm):
         self.fields['delegate'] = OptionalDelegateField(project = project,
                 required = False)
 
+    def _clean_fields(self):
+        super(MultiplePatchForm, self)._clean_fields()
+        # remove optional fields
+        opts = self.instance._meta
+        for f in opts.fields:
+            if not f.name in self.cleaned_data:
+                continue
+
+            field = self.fields.get(f.name, None)
+            if field is None:
+                continue
+
+            if field.is_no_change(self.cleaned_data[f.name]):
+                del self.cleaned_data[f.name]
+
     def save(self, instance, commit = True):
         opts = instance.__class__._meta
         if self.errors: