diff options
-rw-r--r-- | layerindex/bulkchange.py | 17 | ||||
-rw-r--r-- | layerindex/forms.py | 19 | ||||
-rw-r--r-- | layerindex/models.py | 20 | ||||
-rw-r--r-- | layerindex/views.py | 3 |
4 files changed, 22 insertions, 37 deletions
diff --git a/layerindex/bulkchange.py b/layerindex/bulkchange.py index ed36859c30..c569b61fb4 100644 --- a/layerindex/bulkchange.py +++ b/layerindex/bulkchange.py @@ -97,14 +97,15 @@ def patch_recipe(fn, relpath, values): with tempfile.NamedTemporaryFile('w', delete=False) as tf: def outputvalue(name): - rawtext = '%s = "%s"\n' % (name, values[name]) - if name in nowrap_vars: - tf.write(rawtext) - else: - wrapped = textwrap.wrap(rawtext) - for wrapline in wrapped[:-1]: - tf.write('%s \\\n' % wrapline) - tf.write('%s\n' % wrapped[-1]) + if values[name]: + rawtext = '%s = "%s"\n' % (name, values[name]) + if name in nowrap_vars: + tf.write(rawtext) + else: + wrapped = textwrap.wrap(rawtext) + for wrapline in wrapped[:-1]: + tf.write('%s \\\n' % wrapline) + tf.write('%s\n' % wrapped[-1]) tfn = tf.name with open(fn, 'r') as f: diff --git a/layerindex/forms.py b/layerindex/forms.py index 78711e504b..60653cf2b4 100644 --- a/layerindex/forms.py +++ b/layerindex/forms.py @@ -189,25 +189,6 @@ class BulkChangeEditForm(forms.ModelForm): model = RecipeChange fields = ('summary', 'description', 'homepage', 'bugtracker', 'section', 'license') - def __init__(self, *args, **kwargs): - instance = kwargs.get('instance', None) - initial = kwargs.get('initial', {}) - if instance: - recipe = instance.recipe - if recipe: - for fieldname in self._meta.fields: - if not getattr(instance, fieldname): - initial[fieldname] = getattr(recipe, fieldname) - kwargs['initial'] = initial - super(BulkChangeEditForm, self).__init__(*args, **kwargs) - - def clear_same_values(self): - for fieldname in self._meta.fields: - oldval = getattr(self.instance.recipe, fieldname) - newval = getattr(self.instance, fieldname) - if oldval == newval: - setattr(self.instance, fieldname, '') - BulkChangeEditFormSet = modelformset_factory(RecipeChange, form=BulkChangeEditForm, extra=0) diff --git a/layerindex/models.py b/layerindex/models.py index cde8fe3f56..e0d85ea69c 100644 --- a/layerindex/models.py +++ b/layerindex/models.py @@ -415,12 +415,16 @@ class RecipeChange(models.Model): def changed_fields(self, mapped = False): res = {} - for field in self._meta.fields: - if not field.name in ['id', 'changeset', 'recipe']: - value = getattr(self, field.name) - if value: - if mapped: - res[self.RECIPE_VARIABLE_MAP[field.name]] = value - else: - res[field.name] = value + for fieldname in self.RECIPE_VARIABLE_MAP: + value = getattr(self, fieldname) + origvalue = getattr(self.recipe, fieldname) + if value != origvalue: + if mapped: + res[self.RECIPE_VARIABLE_MAP[fieldname]] = value + else: + res[fieldname] = value return res + + def reset_fields(self): + for fieldname in self.RECIPE_VARIABLE_MAP: + setattr(self, fieldname, getattr(self.recipe, fieldname)) diff --git a/layerindex/views.py b/layerindex/views.py index 898a7c4be8..d0330464b2 100644 --- a/layerindex/views.py +++ b/layerindex/views.py @@ -200,8 +200,6 @@ def bulk_change_edit_view(request, template_name, pk): if request.method == 'POST': formset = BulkChangeEditFormSet(request.POST, queryset=changeset.recipechange_set.all()) if formset.is_valid(): - for form in formset: - form.clear_same_values() formset.save() return HttpResponseRedirect(reverse('bulk_change_review', args=(changeset.id,))) else: @@ -524,6 +522,7 @@ class BulkChangeSearchView(AdvancedRecipeSearchView): change = RecipeChange() change.changeset = changeset change.recipe = recipe + change.reset_fields() change.save() if 'add_selected' in request.POST: |