aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--layerindex/bulkchange.py17
-rw-r--r--layerindex/forms.py19
-rw-r--r--layerindex/models.py20
-rw-r--r--layerindex/views.py3
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: