Relecture du code v1
This commit is contained in:
@@ -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)
|
||||
Reference in New Issue
Block a user