Files

204 lines
5.6 KiB
Python
Raw Permalink Normal View History

2025-12-19 09:43:33 +00:00
"""Vuews pour la gestion des fournisseurs."""
from django.shortcuts import render, redirect
from gestion_produit.models import Fournisseur, Categorie, Commander
from django.http import JsonResponse
from django.contrib.auth.decorators import login_required
from .forms import FournisseurForm
@login_required(login_url="login")
def index(request):
"""Gérez la vue index de la gestion des fournisseurs.
2026-01-21 11:03:11 +00:00
Gère l'affichage de la liste des fournisseurs dans un tableau
à l'aide de tabulatorjs et l'enregistrement d'un nouveau fournisseur.
2025-12-19 09:43:33 +00:00
Parameters
----------
request : HttpRequest
La requête HTTP entrante.
Returns
-------
HttpResponse
La réponse HTTP avec le formulaire de fournisseur.
"""
if request.method == "POST":
form = FournisseurForm(request.POST, request.FILES)
if form.is_valid():
form.save()
form = FournisseurForm()
return render(
request,
"gestion_fournisseur/index.html",
{"form": form, "listeCategorie": Categorie.objects.all()},
)
@login_required(login_url="login")
2026-01-21 11:03:11 +00:00
def liste_fournisseurs(request):
2025-12-19 09:43:33 +00:00
"""Renvoyez la liste des fournisseurs au format JSON.
Parameters
----------
request : HttpRequest
La requête HTTP entrante.
Returns
-------
JsonResponse
La réponse JSON contenant la liste des fournisseurs.
"""
fournisseurs = Fournisseur.objects.all().order_by("-id")
data = [
{
"id": f.id,
"nom_entreprise": f.nom_entreprise,
"representant": f.nom_prenom_representant,
"fonction": f.fonction,
"telephone": f.telephone,
"email": f.email,
"note": f.note,
}
for f in fournisseurs
]
return JsonResponse(data, safe=False)
@login_required(login_url="login")
def liste_fournisseur_categorie(request):
2026-01-21 11:03:11 +00:00
"""Renvoyez la liste des fournisseurs par catégorie de produit fourni au format JSON.
2025-12-19 09:43:33 +00:00
Parameters
----------
request : HttpRequest
La requête HTTP entrante.
2026-01-21 11:03:11 +00:00
c : int
L'identifiant de la catégorie de produit.
2025-12-19 09:43:33 +00:00
Returns
-------
JsonResponse
La réponse JSON contenant la liste des fournisseurs filtrés par
catégorie.
"""
categorie = Categorie.objects.get(id=request.GET["c"])
fournisseur_categorie = Fournisseur.objects.filter(categorie=categorie)
data = [
{
"id": f.id,
"nom_entreprise": f.nom_entreprise,
"representant": f.nom_prenom_representant,
"fonction": f.fonction,
"telephone": f.telephone,
"email": f.email,
"note": f.note,
}
for f in fournisseur_categorie
]
return JsonResponse(data, safe=False)
@login_required(login_url="login")
def details_fournisseur(request, id_fournisseur):
"""Affichez les détails d'un fournisseur spécifique.
Parameters
----------
request : HttpRequest
La requête HTTP entrante.
id_fournisseur : int
L'identifiant du fournisseur.
Returns
-------
HttpResponse
La réponse HTTP avec les détails du fournisseur.
"""
fournisseur = Fournisseur.objects.get(id=id_fournisseur)
fournisseur_form = FournisseurForm(instance=fournisseur)
return render(
request,
"gestion_fournisseur/details_fournisseur.html",
{
"fournisseur": fournisseur,
"fournisseurForm": fournisseur_form,
"id_fournisseur": id_fournisseur,
},
)
2026-01-21 11:03:11 +00:00
@login_required(login_url="login")
2025-12-19 09:43:33 +00:00
def mise_a_jour_fournisseur(request, id_fournisseur):
"""Mettez à jour les informations d'un fournisseur spécifique.
Parameters
----------
request : HttpRequest
La requête HTTP entrante.
id_fournisseur : int
L'identifiant du fournisseur.
Returns
-------
HttpResponse
La réponse HTTP redirigeant vers les détails du fournisseur.
"""
fournisseur = Fournisseur.objects.get(id=id_fournisseur)
if request.method == "POST":
form = FournisseurForm(
request.POST,
request.FILES,
instance=fournisseur
2026-01-21 11:03:11 +00:00
)
2025-12-19 09:43:33 +00:00
if form.is_valid():
form.save()
2026-01-21 11:03:11 +00:00
messages.success(request, "Fournisseur mis à jour avec succès.")
else:
messages.error(request, "Erreur lors de la mise à jour du fournisseur.")
2025-12-19 09:43:33 +00:00
return redirect(
"gestion_fournisseur:details_fournisseur",
id_fournisseur=id_fournisseur
)
def liste_livraison_fournisseur(request, id_fournisseur): # noqa: ARG001
"""Renvoyez la liste des livraisons d'un fournisseur au format JSON.
Parameters
----------
request : HttpRequest
La requête HTTP entrante.
id_fournisseur : int
L'identifiant du fournisseur.
Returns
-------
JsonResponse
La réponse JSON contenant la liste des livraisons du fournisseur.
"""
commande_fournisseur = [
{
"date": c.date_livraison,
"produit": c.produit.libelle,
"prix_achat": c.prix_achat,
"quantite": c.quantite_commander,
"montant_total": c.quantite_commander * c.prix_achat,
"date_livraison": c.date_livraison,
"statut": c.livrer,
}
for c in Commander.objects.filter(fournisseur__id=id_fournisseur)
]
return JsonResponse(commande_fournisseur, safe=False)