X-Git-Url: http://git.ozlabs.org/?a=blobdiff_plain;f=apps%2Fpatchwork%2Fforms.py;h=1c5aeef5394dd4e62de228229eb404de4ce0af31;hb=c24e22bb55d5bf6cf523fa9ad3f9b02e07e87566;hp=dc30299970ab7f8a976de0e6b593b4c4e9d2ee50;hpb=750c03f854ace16cd013c189369aa0cf9d3bdd9d;p=patchwork diff --git a/apps/patchwork/forms.py b/apps/patchwork/forms.py index dc30299..1c5aeef 100644 --- a/apps/patchwork/forms.py +++ b/apps/patchwork/forms.py @@ -114,6 +114,7 @@ class UserProfileForm(forms.ModelForm): class OptionalDelegateField(DelegateField): no_change_choice = ('*', 'no change') + to_field_name = None def __init__(self, no_change_choice = None, *args, **kwargs): self.filter = None @@ -140,6 +141,7 @@ class OptionalDelegateField(DelegateField): class OptionalModelChoiceField(forms.ModelChoiceField): no_change_choice = ('*', 'no change') + to_field_name = None def __init__(self, no_change_choice = None, *args, **kwargs): self.filter = None @@ -174,13 +176,12 @@ class MultipleBooleanField(forms.ChoiceField): def is_no_change(self, value): return value == self.no_change_choice[0] -class MultiplePatchForm(PatchForm): +class MultiplePatchForm(forms.Form): state = OptionalModelChoiceField(queryset = State.objects.all()) archived = MultipleBooleanField() def __init__(self, project, *args, **kwargs): - super(MultiplePatchForm, self).__init__(project = project, - *args, **kwargs) + super(MultiplePatchForm, self).__init__(*args, **kwargs) self.fields['delegate'] = OptionalDelegateField(project = project, required = False) @@ -190,7 +191,7 @@ class MultiplePatchForm(PatchForm): raise ValueError("The %s could not be changed because the data " "didn't validate." % opts.object_name) data = self.cleaned_data - # remove 'no change fields' from the data + # Update the instance for f in opts.fields: if not f.name in data: continue @@ -200,10 +201,13 @@ class MultiplePatchForm(PatchForm): continue if field.is_no_change(data[f.name]): - del data[f.name] + continue + + setattr(instance, f.name, data[f.name]) - return forms.save_instance(self, instance, - self._meta.fields, 'changed', commit) + if commit: + instance.save() + return instance class UserPersonLinkForm(forms.Form): email = forms.EmailField(max_length = 200)