1
0
mirror of https://gitlab.crans.org/bde/nk20 synced 2025-05-15 15:02:47 +00:00

Merge branch 'food_bugs' into 'main'

Corrections de quelques bugs (par Quark)

See merge request bde/nk20!315
This commit is contained in:
ehouarn 2025-05-10 19:27:04 +02:00
commit a62cad9a3f

View File

@ -168,7 +168,8 @@ class BasicFoodCreateView(ProtectQuerysetMixin, ProtectedCreateView):
template_name = "food/food_update.html"
def get_sample_object(self):
return BasicFood(
# We choose a club which may work or BDE else
food = BasicFood(
name="",
owner_id=1,
expiry_date=timezone.now(),
@ -177,6 +178,14 @@ class BasicFoodCreateView(ProtectQuerysetMixin, ProtectedCreateView):
date_type='DLC',
)
for membership in self.request.user.memberships.all():
club_id = membership.club.id
food.owner_id = club_id
if PermissionBackend.check_perm(self.request, "food.add_basicfood", food):
return food
return food
@transaction.atomic
def form_valid(self, form):
if QRCode.objects.filter(qr_code_number=self.kwargs['slug']).count() > 0:
@ -227,13 +236,22 @@ class TransformedFoodCreateView(ProtectQuerysetMixin, ProtectedCreateView):
template_name = "food/food_update.html"
def get_sample_object(self):
return TransformedFood(
# We choose a club which may work or BDE else
food = TransformedFood(
name="",
owner_id=1,
expiry_date=timezone.now(),
is_ready=True,
)
for membership in self.request.user.memberships.all():
club_id = membership.club.id
food.owner_id = club_id
if PermissionBackend.check_perm(self.request, "food.add_transformedfood", food):
return food
return food
@transaction.atomic
def form_valid(self, form):
form.instance.expiry_date = timezone.now() + timedelta(days=3)
@ -248,7 +266,7 @@ class TransformedFoodCreateView(ProtectQuerysetMixin, ProtectedCreateView):
MAX_FORMS = 10
class ManageIngredientsView(ProtectQuerysetMixin, LoginRequiredMixin, UpdateView):
class ManageIngredientsView(LoginRequiredMixin, UpdateView):
"""
A view to manage ingredient for a transformed food
"""
@ -279,6 +297,14 @@ class ManageIngredientsView(ProtectQuerysetMixin, LoginRequiredMixin, UpdateView
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()
for ingredient in self.object.ingredients.iterator():
if not (ingredient.polymorphic_ctype.model == 'basicfood' and ingredient.date_type == 'DDM'):
self.object.expiry_date = min(self.object.expiry_date, ingredient.expiry_date)
self.object.allergens.set(self.object.allergens.union(ingredient.allergens.all()))
self.object.save(old_ingredients=old_ingredients, old_allergens=old_allergens)
return HttpResponseRedirect(self.get_success_url())