diff --git a/apps/food/forms.py b/apps/food/forms.py
index fa926c37..fc88cbe2 100644
--- a/apps/food/forms.py
+++ b/apps/food/forms.py
@@ -181,6 +181,11 @@ class ManageIngredientsForm(forms.Form):
)
qrcode.label = _('QR code number')
+ add_all_same_name = forms.BooleanField(
+ required=False,
+ label=_("Add all identical food")
+ )
+
ManageIngredientsFormSet = forms.formset_factory(
ManageIngredientsForm,
diff --git a/apps/food/templates/food/manage_ingredients.html b/apps/food/templates/food/manage_ingredients.html
index 0dd7acb5..54b03dd1 100644
--- a/apps/food/templates/food/manage_ingredients.html
+++ b/apps/food/templates/food/manage_ingredients.html
@@ -22,6 +22,7 @@ SPDX-License-Identifier: GPL-3.0-or-later
{{ form.name.label }} |
{{ form.qrcode.label }} |
{{ form.fully_used.label }} |
+ {{ form.add_all_same_name.label }} |
@@ -34,6 +35,7 @@ SPDX-License-Identifier: GPL-3.0-or-later
{{ form.name }} |
{{ form.qrcode }} |
{{ form.fully_used }} |
+ {{ form.add_all_same_name }} |
{% endfor %}
diff --git a/apps/food/views.py b/apps/food/views.py
index 6a2cebfa..517142ff 100644
--- a/apps/food/views.py
+++ b/apps/food/views.py
@@ -307,11 +307,19 @@ class ManageIngredientsView(LoginRequiredMixin, UpdateView):
elif form.data[prefix + 'name'] != '':
ingredient = Food.objects.get(pk=form.data[prefix + 'name'])
- self.object.ingredients.add(ingredient)
- if (prefix + 'fully_used') in form.data and form.data[prefix + 'fully_used'] == 'on':
- ingredient.end_of_life = _('Fully used in {meal}'.format(
- meal=self.object.name))
- ingredient.save()
+ if form.data.get(prefix + 'add_all_same_name') == 'on':
+ ingredients = Food.objects.filter(name=ingredient.name, owner=ingredient.owner, end_of_life='')
+ for ingredient in ingredients:
+ self.object.ingredients.add(ingredient)
+ if form.data.get(prefix + 'fully_used') == 'on':
+ ingredient.end_of_life = _('Fully used in {meal}'.format(meal=self.object.name))
+ ingredient.save()
+ else:
+ self.object.ingredients.add(ingredient)
+ if (prefix + 'fully_used') in form.data and form.data[prefix + 'fully_used'] == 'on':
+ ingredient.end_of_life = _('Fully used in {meal}'.format(
+ meal=self.object.name))
+ ingredient.save()
# We recalculate new expiry date and allergens
self.object.expiry_date = self.object.creation_date + self.object.shelf_life
self.object.allergens.clear()