Files
sgl/gestion_produit/__pycache__/views.cpython-310.pyc

268 lines
14 KiB
Plaintext
Raw Normal View History

2025-12-19 09:43:33 +00:00
o
<00>yljG<00>@sLdZddlmZmZddlmZddlmZddlm Z ddl
m Z ddl m Z dd lmZmZmZmZmZdd
lmZmZmZmZ d/d d <0A>Ze dd<0F><00>Zdd<11>Ze dd<13><00>Ze dd<15><00>Ze dd<17><00>Ze dd<19><00>Ze dd<1B><00>Z e dd<1D><00>Z!e dd<1F><00>Z"e d d!<21><00>Z#e d"d#<23><00>Z$e d$d%<25><00>Z%e d&d'<27><00>Z&d(d)<29>Z'e d*d+<2B><00>Z(e d,d-<2D><00>Z)d.S)0z#Views pour la gestion des produits.<2E>)<02>render<65>redirect)<01> Paginator)<01>Sum)<01>Profile)<01>login_required)<01> JsonResponse<73>)<05> Categorie<69>Produit<69>Demander<65> Fournisseur<75> Commander)<04>EnregistrementProduit<69>EnregistrementCategorie<69>CommanderProduit<69>DemanderProduitFcCsntjj|jd<01>}tjj||d<02>}d}|jjjr"tjj||jjjd<04>}|r/|r-||B<00> d<05>S|S|r5||BS|S)u<>Affichez les demandes de produit selon le profil de l'utilisateur.
2025-12-19 09:43:33 +00:00
Parameters
----------
request : HttpRequest
La requête HTTP entrante.
option_validation_chef : bool or None
Filtre pour la validation par le chef de département.
1- True : demandes validées par le chef.
2- False : demandes non validées par le chef.
3- None : demandes en attentes.
ordre_inverse : bool, optional
Si True, les demandes sont triées par ordre décroissant,
par défaut False.
Returns
-------
QuerySet:
Ensemble des demandes filtrées selon les critères spécifiés.
)<01>user)<02>valider_par_chefrN)r<00>user__departement<6E>-id)
r<00>objects<74>getrr <00>filter<65>profile<6C>chef_departement<6E> departement<6E>order_by)<06>request<73>option_validation_chef<65> ordre_inverser<00> mes_demandes<65>demandes_departement<6E>r#<00>%/var/www/SGL/gestion_produit/views.py<70>gestion_affichage_demandes*<06>
<06><0E><02><02><08><02><02>r%c Csrtj<01><02><00>d<01>}tj<01><02><00>d<02>}dd<04>|D<00>}t|d<05>}|j<06>d<06>}|<04>|<05>}t |dt
2025-12-19 09:43:33 +00:00
t t t t|dd <09>||d
<EFBFBD><07>S) u<>Gérer le rendu de la page d'accueil de la gestion des produits.
Parameters
----------
request : HttpRequest
La requête HTTP entrante.
Returns
-------
HttpResponse
La réponse HTTP contenant la page rendue.
r<00> categoriecSsg|]}t|<01><01>qSr#)<01>calcul_stock_produit)<02>.0<EFBFBD>produitr#r#r$<00>
<listcomp>as<06>zindex.<locals>.<listcomp><3E><00>page<67>gestion_produit/index.htmlN)r)<07>!formulaireEnregistrementCategorie<69>formulaireEnregistrementProduit<69>formulaireCommanderProduit<69>formulaireDemanderProduitr!<00>page_obj<62>liste_categorie)r r<00>allrr
r<00>GETr<00>get_pagerrrrrr%)r<00> liste_produitr3<00>liste_produit_finale<6C>
pagination<EFBFBD> page_numberr2r#r#r$<00>indexOs,<06>
2025-12-19 09:43:33 +00:00
 
<04><04><04>r;cCs dd<02>tj<01><02>D<00>}t|dd<04>S)uRecuperez et renvoyez la liste des catégories de produit au format JSON.
2025-12-19 09:43:33 +00:00
Parameters
----------
request : HttpRequest
La requête HTTP entrante.
Returns
-------
JsonResponse
Réponse JSON contenant la liste des catégories de produits.
cSsg|]}d|ji<01>qS<00>r&r<<00>r(r&r#r#r$r*<00>s<08><06>z$liste_categories.<locals>.<listcomp>F<><01>safe)r
rr4r)<02>_request<73>mes_categoriesr#r#r$<00>liste_categories{s<06> rBcCsL|jdkr"t|j|j<03>}|<01><04>r|<01><05>tddd<04><02>Stddd<04><02>Std<07>S)uEnregistrez un nouveau produit à partir des données POST.
2025-12-19 09:43:33 +00:00
Parameters
----------
request : HttpRequest
La requête HTTP entrante.
Returns
-------
JsonResponse
Réponse JSON indiquant le succès ou l'échec de l'enregistrement.
<20>POSTTu Produit enregistré avec succès<C3A8><02>success<73>messageFu&L'enregistrement du produit a échoué<75>gestion_produit:index)<08>methodrrC<00>FILES<45>is_valid<69>saverr<00>r<00>formr#r#r$<00>enregistrer_produit<69>s
<04><04><04>rNc Csnttjj|d<01><01>}tj<02><05>}|d|d|d|d|d|d|dr)|djnd d
2026-01-21 16:33:01 +00:00
d <0B>|D<00>d <0C>}t|<04>S) uWRenvoyez les détails d'un produit spécifique au format JSON.
Parameters
----------
request : HttpRequest
La requête HTTP entrante.
id_produit : int
L'ID du produit dont on veut récupérer les détails.
Returns
-------
JsonResponse
Réponse JSON contenant les détails du produit.
<20><01>idrP<00>libelle<6C> categorie_id<69>conditionnement<6E>seuil_pre_rupture<72> stockActuel<65>image<67>cS<00>g|] }|j|jd<00><02>qS)<01>rPr&rYr=r#r#r$r*<00>s <0C><06>z"detail_produit.<locals>.<listcomp>)<08>detailId<49> detailLibelle<6C>detailCategorie<69>detailConditionnement<6E>detailSeuilPreRupture<72>detailQuantiteStock<63> detailImage<67>listeCategorie)r'r rrr
r4<00>urlr)r<00>
2026-01-21 16:33:01 +00:00
id_produit<EFBFBD>detail_produit<69>
categoriesr)r#r#r$rd<00>s
<04><06>rdcCs<>|jdkrG|j<01>d<02>}tjj|d<03>}|j<01>d<04>|_|j<01>d<05>|_|j<01>d<06>|_|j<01>d<07>}tjj|d<03>|_ |j<01>d<08>|_
2026-01-21 16:33:01 +00:00
|<02> <0B>t d d
d <0B><02>St d <0C>S) u(Enregistrez les modifications apportées au produit à partir des données POST.
Parameters
----------
request : HttpRequest
La requête HTTP entrante.
Returns
-------
JsonResponse
Réponse JSON indiquant le succès ou l'échec de l'enregistrement.
rCrcrOrQrSrTr&<00>quantite_stockTuProduit modifié avec succèsrDrG)rHrCrr rrQrSrTr
r&rfrKrr)rrc<00>produit_instancerRr#r#r$<00> enregistrer_modification_produit<69>s
  <04>rhcCs,|jdkrt|j<02>}|<01><03>r|<01><04>td<02>S)z-Enregistrez une nouvelle commande de produit.rCrG)rHrrCrJrKrrLr#r#r$<00>enregistrer_commande<64>s
2025-12-19 09:43:33 +00:00

ricCsR|jdkr%t|j<02>}|<01><03>r%|jdd<03>}|jj|_|jjjr!d|_|<02><04>t d<05>S)z,Enregistrez une nouvelle demande de produit.rCF)<01>commitTrG)
rHrrCrJrKrrrrr)rrM<00>
ma_demander#r#r$<00>enregistrer_demandes
2025-12-19 09:43:33 +00:00

 

rlcCs(t|ddd<02>}dd<04>|D<00>}t|dd<06>S)z;Retournez la liste des demandes de produits au format JSON.T)rr c Ss4g|]}|j|jj|j|j|j|j|j|jd<00><08>qS))<08> dateDemander)<00>motifs<66>a_rendre<72>dateDeMiseADispoSouhaiter<00>valider_par_logisticien<65> motifs_refus)<08>date_de_mise_a_dispo_souhaiter)rQrnrorrq<00> motif_refus<75>r(<00>demander#r#r$r*s <04><04><06>z"liste_demandes.<locals>.<listcomp>Fr>)r%r)r<00>liste_demandes<65> les_demandesr#r#r$rws<06> <06> rwcCs>tjj|d<01>}|jj|jjj|j|j|j|j j
j d<02>}t |<03>S)u;Renvoyez les détails d'une demande spécifique de produit.rO)<06> detailNomr\<00> detailmotif<69>detailDeMiseADispo<70> detailARendrer) r rrr)rQr&rnrsrorrrr)r<00>
id_demande<EFBFBD>detail_demandervr#r#r$r~$s<06> r~cCsx|jdkr<>|j<01>d<02>}|j<01>d<03>}|j<01>d<04>}|j<01>d<05>}t|||g<03>s-tddd<08>d d
2026-01-21 11:03:11 +00:00
<EFBFBD>Sz tjj|d <0B>}WntjyItdd d<08>d d
<EFBFBD>YSw||f r`dkr`\dkr`dkrad|_nH rtdkrt\dkrtdkrud|_ n4 r<>dkr<>\dkr<>dkr<>d|_n  r<>dkr<>\dkr<>dkr<>d|_ ||_
n  tddd<08>d d
<EFBFBD>S|<05> <0B>tddd<08><02>Stddd<08>dd
<EFBFBD>S)uiMet à jour le statut d'une demande de produit.
2025-12-19 09:43:33 +00:00
Parameters
----------
request : HttpRequest
La requête HTTP entrante.
request.id : int
L'ID de la demande à mettre à jour.
2026-01-21 11:03:11 +00:00
request.action : int
L'action effectuée
1: Pour confirmer
0: Pour refuser
2025-12-19 09:43:33 +00:00
request.emetteur : str
L'émetteur de la demande ('chef' ou 'logisticien').
request.motif_refus : str
2026-01-21 11:03:11 +00:00
Le motif de refus.
2025-12-19 09:43:33 +00:00
Returns
-------
JsonResponse
Réponse JSON indiquant le succès ou l'échec de la mise à jour.
rCrP<00>action<6F>emetteurrtFuDonnées manquantesrDi<>)<01>statusrOzDemande introuvablei<65><00><00>1<>chefT<66> logisticien<65>0uDonnées invalidesuStatut mis à jouruMéthode non autoriséei<65>) rHrCrr4rr r<00> DoesNotExistrrqrtrK)r<00>
produit_idrr<>rnrvr#r#r$<00> update_statut4sR
2026-01-21 11:03:11 +00:00
    
<06>
<EFBFBD><02><02><02><02><02><06>
<06>r<EFBFBD>cCs@tj<01><02><00>d<01>}t|d<02>}|j<05>d<03>}|<02>|<03>}t|dd|i<01>S)uRécupèrez et renvoyez la liste des produits paginés.
2025-12-19 09:43:33 +00:00
Parameters
----------
request : HttpRequest
La requête HTTP entrante.
Returns
-------
HttpResponse
La réponse HTTP contenant la page rendue avec la liste des produits.
rr+r,r-r2) r rr4rrr5rr6r)rr7r9r:r2r#r#r$<00>recuperer_liste_produitvs
2025-12-19 09:43:33 +00:00
 
<04>r<EFBFBD>cCs@|jdkrt|j<02>}|<01><03>r|<01><04>tddi<01>Stddi<01>SdS)uoEnregistrez une nouvelle catégorie de produit.
2025-12-19 09:43:33 +00:00
Cette vue est appelée via une requête AJAX avec la méthode POST et
enregistre une nouvelle.
Parameters
----------
request : HttpRequest
La requête HTTP entrante.
Returns
-------
JsonResponse
Réponse JSON indiquant le succès ou l'échec de l'enregistrement.
rCrETFN)rHrrCrJrKr)rrer#r#r$<00>enregistrer_categorie<69>s
2026-01-21 11:03:11 +00:00

  r<>cCs8tjj|d<01>}tjj|jd<02>}dd<04>|D<00>}t|dd<06>S)u<>Récupèrez les fournisseurs associés à la catégorie d'un produit donné.
2025-12-19 09:43:33 +00:00
Parameters
----------
request : HttpRequest
La requête HTTP entrante.
id_produit : int
L'ID du produit dont on veut récupérer les fournisseurs.
Returns
-------
JsonResponse
Réponse JSON contenant la liste des fournisseurs associés à la
catégorie du produit.
rOr<cSrX))rP<00>nom_fournisseur)rP<00>nom_entreprise)r(<00>fournisseur_produitr#r#r$r*<00>s <04><04><06>z7recuperer_fournisseur_par_categorie.<locals>.<listcomp>Fr>)r rrr rr&r)r@rcr)<00> fournisseur<75>produit_founisseurr#r#r$<00>#recuperer_fournisseur_par_categorie<69>s <06> r<>c Cs<>tjjd|d<02><02>td<03><01>dpd}tjj|dd<06>}d}|D]}|jr'|jdus,|jdur1||j7}q|j ||}|j
2025-12-19 09:43:33 +00:00
|j |j |j |j |j|j|d<08>S) uCalculez le stock actuel d'un produit donné.
Parameters
----------
produit : Produit
L'instance du produit pour lequel calculer le stock.
Returns
-------
dict
Dictionnaire contenant les détails du produit et son stock actuel.
T)<02>livrerr)<00>quantite_commander<65>quantite_commander__sumr)r)rqF)rPrQrfrSrTrVrRrU)rrr<00> aggregaterr ro<00>rendu<64>quantiterfrPrQrSrTrVrR)r)<00>quantite_livrer<65>produit_demander_a_rendre<72>quantite_produit_sortis<69>produit_demander<65> stock_actuelr#r#r$r'<00>sB<02><04><02><06><02>
2025-12-19 09:43:33 +00:00


2026-01-21 11:03:11 +00:00
<02><02><04><06>r'cCs
t|d<01>S)u<>Retournez la page de mouvement de stock.
2025-12-19 09:43:33 +00:00
Parameters
----------
request : HttpRequest
La requête HTTP entrante.
Returns
-------
HttpResponse
La réponse HTTP contenant la page rendue.
z$gestion_produit/mouvement_stock.html)r)rr#r#r$<00>mouvement_stock<63>s
r<>cCs<>g}|jd}|<02>d<02>\}}|jd}|dkr)|<01>dd<06>tjj||dd<08>D<00><01>n|d kr>|<01>d
2025-12-19 09:43:33 +00:00
d<06>tjj||dd <0B>D<00><01>t|d d <0A>S)u<>Générez un rapport de mouvement de stock basé sur les filtres donnés.
Parameters
----------
request : HttpRequest
La requête HTTP entrante.
request.GET["dateFiltre"] : str
La date de filtre au format "YYYY-MM".
request.GET["typeFiltre"] : str
Le type de filtre ("entree" ou "sortie").
Returns
-------
JsonResponse
Réponse JSON contenant le rapport de mouvement de stock.
<20>
dateFiltre<EFBFBD>-<2D>
2025-12-19 09:43:33 +00:00
typeFiltre<EFBFBD>entreec
Ss8g|]}|jj|jjj|jj|jj|j|j|jd<00><07>qS))<07>produit_entree<65>categorie_entree<65>conditionnement_entree<65>fournisseur_entree<65>date_commande_entree<65>date_livraison_entree<65>quantite_commander_entree) r)rQr&rSr<>r<><00> date_commande<64>date_livraisonr<6E>)r(<00>commander#r#r$r*$s
<06><04><06>z+rapport_mouvement_stock.<locals>.<listcomp>T)<03>date_livraison__year<61>date_livraison__monthr<68><00>sortiecSs.g|]}|jj|jjj|jj|j|jd<00><05>qS))<05>produit_sortie<69>categorie_sortie<69>conditionnement_sortie<69>date_demande_sortie<69>quantite_demander_sortie)r)rQr&rSrsr<>rur#r#r$r*6s <06><04><06>)<03>#date_de_mise_a_dispo_souhaite__year<61>$date_de_mise_a_dispo_souhaite__monthrqFr>)r5<00>split<69>extendrrrr r)r<00> mes_commandes<65> date_filtre<72>annee<65>mois<69> type_filtrer#r#r$<00>rapport_mouvement_stock s*
2025-12-19 09:43:33 +00:00



<04>
<EFBFBD>
 <04><08> r<>N)F)*<2A>__doc__<5F>django.shortcutsrr<00>django.core.paginatorr<00>django.db.modelsr<00>authentification.modelsr<00>django.contrib.auth.decoratorsr<00> django.httpr<00>modelsr
r r r r<00>formsrrrrr%r;rBrNrdrhrirlrwr~r<>r<>r<>r<>r'r<>r<>r#r#r#r$<00><module>sR     
<EFBFBD>3
+

%





A


0