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.libelle}
- - ${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.libelle}
- -

- Quantite en stock: ${produit.stockActuel} -

- ${produit.appartient_logistique ? `` : ""} - ${produit.appartient_logistique ? `` : ""} - -
-
-
`; - }); - }) - } + $('searchForm').submit(); }) // Enregistrement de nouveau produit