diff --git a/apps/food/fixtures/initial.json b/apps/food/fixtures/initial.json index 43a0ffe1..2442b92f 100644 --- a/apps/food/fixtures/initial.json +++ b/apps/food/fixtures/initial.json @@ -52,7 +52,7 @@ "model": "food.allergen", "pk": 8, "fields": { - "name": "Céléri" + "name": "Céleri" } }, { diff --git a/apps/food/views.py b/apps/food/views.py index 96c6b89e..90d6e8b7 100644 --- a/apps/food/views.py +++ b/apps/food/views.py @@ -8,7 +8,7 @@ from django_tables2.views import MultiTableMixin from django.db import transaction from django.db.models import Q from django.http import HttpResponseRedirect -from django.views.generic import DetailView, UpdateView +from django.views.generic import DetailView, UpdateView, CreateView from django.views.generic.list import ListView from django.urls import reverse_lazy from django.utils import timezone @@ -106,7 +106,7 @@ class FoodListView(ProtectQuerysetMixin, LoginRequiredMixin, MultiTableMixin, Li return context -class QRCodeCreateView(ProtectQuerysetMixin, ProtectedCreateView): +class QRCodeCreateView(ProtectQuerysetMixin, CreateView): """ A view to add qrcode """ @@ -260,6 +260,8 @@ class AddIngredientView(ProtectQuerysetMixin, UpdateView): @transaction.atomic def form_valid(self, form): meals = TransformedFood.objects.filter(pk__in=form.data.getlist('ingredients')).all() + if not meals: + return HttpResponseRedirect(reverse_lazy('food:food_view', kwargs={"pk": self.object.pk})) for meal in meals: old_ingredients = list(meal.ingredients.all()).copy() old_allergens = list(meal.allergens.all()).copy() @@ -385,7 +387,8 @@ class BasicFoodDetailView(FoodDetailView): return context def get(self, *args, **kwargs): - kwargs['stop_redirect'] = (Food.objects.get(pk=kwargs['pk']).polymorphic_ctype.model == 'basicfood') + if Food.objects.filter(pk=kwargs['pk']).count() == 1: + kwargs['stop_redirect'] = (Food.objects.get(pk=kwargs['pk']).polymorphic_ctype.model == 'basicfood') return super().get(*args, **kwargs) @@ -404,5 +407,6 @@ class TransformedFoodDetailView(FoodDetailView): return context def get(self, *args, **kwargs): - kwargs['stop_redirect'] = (Food.objects.get(pk=kwargs['pk']).polymorphic_ctype.model == 'transformedfood') + if Food.objects.filter(pk=kwargs['pk']).count() == 1: + kwargs['stop_redirect'] = (Food.objects.get(pk=kwargs['pk']).polymorphic_ctype.model == 'transformedfood') return super().get(*args, **kwargs)