Relecture du code v1

This commit is contained in:
2026-01-21 11:03:11 +00:00
parent f11d1e62b4
commit 1f523e61b5
392 changed files with 255 additions and 246 deletions

View File

@@ -4,7 +4,7 @@ from django.shortcuts import render, redirect
from django.core.paginator import Paginator
from django.db.models import Sum
from django.views.decorators.csrf import csrf_exempt
# from django.views.decorators.csrf import csrf_exempt
from django.contrib.auth.decorators import login_required
from django.http import JsonResponse
@@ -24,10 +24,6 @@ from .forms import (
DemanderProduit,
)
PRODUIT_NON_A__RENDRE = False
PRODUIT_NON_RENDU = False
def gestion_affichage_demande(
request,
option_validation_chef,
@@ -94,7 +90,6 @@ def index(request):
"""
liste_produit = Produit.objects.all().order_by("-id")
liste_categorie = Categorie.objects.all().order_by("categorie")
liste_produit_finale = [
@@ -123,8 +118,8 @@ def index(request):
)
def liste_categories(request): # noqa: ARG001
"""Récupère et renvoie la liste des catégories de produits au format JSON.
def liste_categories(_request):
"""Recuperez et renvoyez la liste des catégories de produit au format JSON.
Parameters
----------
@@ -145,9 +140,8 @@ def liste_categories(request): # noqa: ARG001
return JsonResponse(mes_categories, safe=False)
@login_required(login_url="login")
@csrf_exempt
def enregistrer_produit(request):
"""Enregistre un nouveau produit à partir des données POST.
"""Enregistrez un nouveau produit à partir des données POST.
Parameters
----------
@@ -161,9 +155,9 @@ def enregistrer_produit(request):
"""
if request.method == "POST":
p = EnregistrementProduit(request.POST, request.FILES)
if p.is_valid():
p.save()
form = EnregistrementProduit(request.POST, request.FILES)
if form.is_valid():
form.save()
return JsonResponse(
{"success": True, "message": "Produit enregistré avec succès"}
)
@@ -176,7 +170,6 @@ def enregistrer_produit(request):
return redirect(index)
@login_required(login_url="login")
def enregistrer_commande(request):
"""Enregistrez une nouvelle commande de produit."""
@@ -187,7 +180,6 @@ def enregistrer_commande(request):
return redirect("gestion_produit:index")
@login_required(login_url="login")
def enregistrer_demande(request):
"""Enregistrez une nouvelle demande de produit."""
@@ -202,7 +194,6 @@ def enregistrer_demande(request):
ma_demande.save()
return redirect("gestion_produit:index")
@login_required(login_url="login")
def liste_demandes(request):
"""Retournez la liste des demandes de produits au format JSON."""
@@ -231,7 +222,6 @@ def detail_demande(request, id_demande):
detail_demande = Demander.objects.get(id=id_demande)
demande = {
# "image": detail_demande.produit.image.url,
"detailNom": detail_demande.produit.libelle,
"detailCategorie": detail_demande.produit.categorie.categorie,
"detailmotif": detail_demande.motifs,
@@ -243,7 +233,6 @@ def detail_demande(request, id_demande):
return JsonResponse(demande)
@login_required(login_url="login")
@csrf_exempt
def update_statut(request):
"""Met à jour le statut d'une demande de produit.
@@ -253,12 +242,14 @@ def update_statut(request):
La requête HTTP entrante.
request.id : int
L'ID de la demande à mettre à jour.
request.action : str
L'action à effectuer ('confirmer' ou 'refuser').
request.action : int
L'action effectuée
1: Pour confirmer
0: Pour refuser
request.emetteur : str
L'émetteur de la demande ('chef' ou 'logisticien').
request.motif_refus : str
Le motif de refus (si applicable).
Le motif de refus.
Returns
-------
@@ -272,33 +263,34 @@ def update_statut(request):
emetteur = request.POST.get("emetteur")
motifs = request.POST.get("motif_refus")
if not all([produit_id, action, emetteur]):
return JsonResponse(
{"success": False, "message": "Données manquantes"}, status=400
)
try:
demande = Demander.objects.get(id=produit_id)
except Demander.DoesNotExist:
return JsonResponse(
{
"success": False,
"message": "Demande introuvable"
},
{"success": False, "message": "Demande introuvable"},
status=404
)
if action == "1":
if emetteur == "chef":
match action, emetteur:
case "1", "chef":
demande.valider_par_chef = True
elif emetteur == "logisticien":
case "1", "logisticien":
demande.valider_par_logisticien = True
elif action == "0":
if emetteur == "chef":
case "0", "chef":
demande.valider_par_chef = False
elif emetteur == "logisticien":
case "0", "logisticien":
demande.valider_par_logisticien = False
demande.motif_refus = motifs
else:
return JsonResponse(
{"success": False, "message": "Action invalide"}, status=400
)
case _:
return JsonResponse(
{"success": False, "message": "Données invalides"},
status=400
)
demande.save()
return JsonResponse({"success": True, "message": "Statut mis à jour"})
@@ -306,10 +298,9 @@ def update_statut(request):
{"success": False, "message": "Méthode non autorisée"}, status=405
)
@login_required(login_url="login")
def recuperer_liste_produit(request):
"""Récupèrez et renvoyez la liste des produits paginée.
"""Récupèrez et renvoyez la liste des produits paginés.
Parameters
----------
@@ -335,7 +326,6 @@ def recuperer_liste_produit(request):
)
@login_required(login_url="login")
@csrf_exempt
def enregistrer_categorie(request):
"""Enregistrez une nouvelle catégorie de produit.
@@ -362,7 +352,7 @@ def enregistrer_categorie(request):
return None
@login_required(login_url="login")
def recuperer_fournisseur_par_categorie(request, id_produit): # noqa: ARG001
def recuperer_fournisseur_par_categorie(_request, id_produit):
"""Récupèrez les fournisseurs associés à la catégorie d'un produit donné.
Parameters
@@ -392,8 +382,6 @@ def recuperer_fournisseur_par_categorie(request, id_produit): # noqa: ARG001
return JsonResponse(produit_founisseur, safe=False)
# @login_required(login_url="login")
def calcul_stock_produit(produit):
"""Calculez le stock actuel d'un produit donné.
@@ -428,7 +416,6 @@ def calcul_stock_produit(produit):
):
quantite_produit_sortis += produit_demander.quantite
## Stock actuel = Quantite initiale + total livrer - quantiteSorties
stock_actuel = (produit.quantite_stock
+ quantite_livrer
- quantite_produit_sortis)
@@ -445,7 +432,7 @@ def calcul_stock_produit(produit):
@login_required(login_url="login")
def mouvement_stock(request):
"""Rendez la page de mouvement de stock.
"""Retournez la page de mouvement de stock.
Parameters
----------
@@ -487,13 +474,13 @@ def rapport_mouvement_stock(request):
if type_filtre == "entree":
mes_commandes.extend([
{
"produit": commande.produit.libelle,
"categorie": commande.produit.categorie.categorie,
"conditionnement": commande.produit.conditionnement,
"fournisseur": commande.fournisseur.nom_entreprise,
"date_commande": commande.date_commande,
"date_livraison": commande.date_livraison,
"quantite_commander": commande.quantite_commander,
"produit_entree": commande.produit.libelle,
"categorie_entree": commande.produit.categorie.categorie,
"conditionnement_entree": commande.produit.conditionnement,
"fournisseur_entree": commande.fournisseur.nom_entreprise,
"date_commande_entree": commande.date_commande,
"date_livraison_entree": commande.date_livraison,
"quantite_commander_entree": commande.quantite_commander,
}
for commande in Commander.objects.filter(
date_livraison__year=annee,
@@ -505,18 +492,18 @@ def rapport_mouvement_stock(request):
elif type_filtre == "sortie":
mes_commandes.extend([
{
"produit": demande.produit.libelle,
"categorie": demande.produit.categorie.categorie,
"conditionnement": demande.produit.conditionnement,
"date_demande": demande.dateDemande,
"produit_sortie": demande.produit.libelle,
"categorie_sortie": demande.produit.categorie.categorie,
"conditionnement_sortie": demande.produit.conditionnement,
"date_demande_sortie": demande.date_de_mise_a_dispo_souhaite,
# "date_mise_a_dispo": commande.date_commande,
"quantite_demander": demande.quantite,
"quantite_demander_sortie": demande.quantite,
}
for demande in Demander.objects.filter(
dateDemande__year=annee,
dateDemande__month=mois,
date_de_mise_a_dispo_souhaite__year=annee,
date_de_mise_a_dispo_souhaite__month=mois,
valider_par_logisticien=True,
)
])
return JsonResponse(mes_commandes, safe=False)
return JsonResponse(mes_commandes, safe=False)