diff --git a/gestion_produit/__pycache__/urls.cpython-310.pyc b/gestion_produit/__pycache__/urls.cpython-310.pyc
index 03f22ba..014d45a 100644
Binary files a/gestion_produit/__pycache__/urls.cpython-310.pyc and b/gestion_produit/__pycache__/urls.cpython-310.pyc differ
diff --git a/gestion_produit/__pycache__/views.cpython-310.pyc b/gestion_produit/__pycache__/views.cpython-310.pyc
index cc630a2..4a54846 100644
Binary files a/gestion_produit/__pycache__/views.cpython-310.pyc and b/gestion_produit/__pycache__/views.cpython-310.pyc differ
diff --git a/gestion_produit/templates/gestion_produit/index.html b/gestion_produit/templates/gestion_produit/index.html
index d6ab1d2..c4696a5 100644
--- a/gestion_produit/templates/gestion_produit/index.html
+++ b/gestion_produit/templates/gestion_produit/index.html
@@ -54,17 +54,22 @@
diff --git a/gestion_produit/urls.py b/gestion_produit/urls.py
index 1f34f6b..ac8d6c6 100644
--- a/gestion_produit/urls.py
+++ b/gestion_produit/urls.py
@@ -81,14 +81,4 @@ urlpatterns = [
views.detail_demande,
name="detail_demande"
),
- path(
- "filtrer-produit-par-categorie/
/",
- views.filtrer_produit_par_categorie,
- name="filtrer_produit_par_categorie"
- ),
- path(
- "filtrer-par-nom-produit/",
- views.filtre_par_nom_produit,
- name="filtrer_par_nom_produit"
- ),
]
diff --git a/gestion_produit/views.py b/gestion_produit/views.py
index f1a9663..c5f9141 100644
--- a/gestion_produit/views.py
+++ b/gestion_produit/views.py
@@ -2,7 +2,7 @@
from django.shortcuts import render, redirect
from django.core.paginator import Paginator
-from django.db.models import Sum
+from django.db.models import Sum, Q
from authentification.models import Profile
from django.contrib.auth.decorators import login_required
@@ -90,9 +90,25 @@ def index(request):
La réponse HTTP contenant la page rendue.
"""
- liste_produit = Produit.objects.all().order_by("-id")
+ product_name = request.GET.get("search", "")
+ categorie_name = request.GET.get("filterCategorie", "")
liste_categorie = Categorie.objects.all().order_by("categorie")
+ if product_name == "" and categorie_name == "":
+ liste_produit = Produit.objects.all().order_by("-id")
+ elif product_name != "" and categorie_name == "":
+ liste_produit = Produit.objects.filter(
+ Q(libelle__icontains=product_name)
+ ).order_by("-id")
+ elif product_name == "" and categorie_name != "":
+ liste_produit = Produit.objects.filter(
+ Q(categorie=categorie_name)
+ ).order_by("-id")
+ else:
+ liste_produit = Produit.objects.filter(
+ Q(categorie=categorie_name) & Q(libelle__icontains=product_name)
+ ).order_by("-id")
+
liste_produit_finale = [
calcul_stock_produit(produit) for produit in liste_produit
]
@@ -422,73 +438,6 @@ def enregistrer_categorie(request):
return JsonResponse({"success": False})
return None
-def filtrer_produit_par_categorie(request, id_categorie):
- """Filtrez les produits par catégorie et renvoyez-les au format JSON.
-
- Parameters
- ----------
- request : HttpRequest
- La requête HTTP entrante.
- id_categorie : int
- L'ID de la catégorie pour laquelle filtrer les produits.
-
- Returns
- -------
- JsonResponse
- Réponse JSON contenant la liste des produits filtrés par catégorie.
-
- """
- produits = Produit.objects.filter(categorie_id=id_categorie)
- produits_filtres = [
- {
- "id": produit.id,
- "libelle": produit.libelle,
- "conditionnement": produit.conditionnement,
- "quantite_stock": produit.quantite_stock,
- "seuil_pre_rupture": produit.seuil_pre_rupture,
- "image": produit.image.url if produit.image else "",
- "appartient_logistique": request.user.groups.filter(name="Logistique").exists(),
-
- }
- for produit in produits
- ]
- return JsonResponse(produits_filtres, safe=False)
-
-def filtre_par_nom_produit(request):
- """Filtrez les produits par nom et renvoyez-les au format JSON.
-
- Parameters
- ----------
- request : HttpRequest
- La requête HTTP entrante.
- nom_produit : str
- Le nom du produit pour lequel filtrer les produits.
-
- Returns
- -------
- JsonResponse
- Réponse JSON contenant la liste des produits filtrés par nom.
-
- """
- nom_produit = request.GET.get("nom", "")
- if nom_produit == "":
- produits = Produit.objects.all()
- else:
- produits = Produit.objects.filter(libelle__icontains=nom_produit)
- produits_filtres = [
- {
- "id": produit.id,
- "libelle": produit.libelle,
- "conditionnement": produit.conditionnement,
- "quantite_stock": produit.quantite_stock,
- "seuil_pre_rupture": produit.seuil_pre_rupture,
- "image": produit.image.url if produit.image else "",
- "appartient_logistique": request.user.groups.filter(name="Logistique").exists(),
- }
- for produit in produits
- ]
- return JsonResponse(produits_filtres, safe=False)
-
@login_required
def recuperer_fournisseur_par_categorie(_request, id_produit):
"""Récupèrez les fournisseurs associés à la catégorie d'un produit donné.
diff --git a/static/js/gestion_produit.js b/static/js/gestion_produit.js
index c8f1c97..e9feffa 100644
--- a/static/js/gestion_produit.js
+++ b/static/js/gestion_produit.js
@@ -82,36 +82,8 @@ document.addEventListener('DOMContentLoaded', function () {
})
// --------------------------- FILTRE PAR NOM DU PRODUIT -------------------------
- $('searchInput').addEventListener('keyup', function() {
- const filter = this.value.toLowerCase();
-
- fetch(`/gestion-produit/filtrer-par-nom-produit/?nom=${filter}`)
- .then(response => response.json())
- .then(data => {
- const cardContainer = document.querySelector("#cardContainer");
- cardContainer.innerHTML = "";
- data.forEach(produit => {
- cardContainer.innerHTML += `
-
-
-

-
-
${produit.libelle}
-
${produit.categorie_id}
- ${produit.appartient_logistique ? `
- Quantite en stock: ${produit.stockActuel}
-
` : ""}
- ${produit.appartient_logistique ? `
` : ""}
-
-
-
-
`;
- });
- })
+ $('searchInput').addEventListener('submit', function() {
+ $('searchForm').submit();
})
// Enregistrement de commande
@@ -157,42 +129,7 @@ document.addEventListener('DOMContentLoaded', function () {
// Filtre des produits par categorie
$("filterCategorie").addEventListener("change", function(){
- const filtre = this.value;
- if(filtre === ""){
- location.reload();
- }else{
- fetch(`/gestion-produit/filtrer-produit-par-categorie/${filtre}/`)
- .then(response => response.json())
- .then(data => {
- console.log(data);
- const cardContainer = document.querySelector("#cardContainer");
- cardContainer.innerHTML = "";
- data.forEach(produit => {
- cardContainer.innerHTML += `
-
-
-

-
-
${produit.libelle}
-
${produit.categorie_id}
-
- Quantite en stock: ${produit.stockActuel}
-
- ${produit.appartient_logistique ? `
` : ""}
- ${produit.appartient_logistique ? `
` : ""}
-
-
-
-
`;
- });
- })
- }
+ $('searchForm').submit();
})
// Enregistrement de nouveau produit