Adding stock table in the db
This commit is contained in:
parent
764588ba65
commit
a278b6bada
2 changed files with 144 additions and 1 deletions
4
main.py
4
main.py
|
@ -4,6 +4,7 @@ from tkinter import IntVar, Checkbutton, LabelFrame, Scrollbar, Listbox, Entry,
|
||||||
from re import sub
|
from re import sub
|
||||||
|
|
||||||
from users import Utilisateurs # import de mon fichier pour gérer la base de donnée
|
from users import Utilisateurs # import de mon fichier pour gérer la base de donnée
|
||||||
|
from stock import Stock
|
||||||
|
|
||||||
class GesMag:
|
class GesMag:
|
||||||
"""Programme de Gestion d'une caise de magasin."""
|
"""Programme de Gestion d'une caise de magasin."""
|
||||||
|
@ -16,7 +17,8 @@ class GesMag:
|
||||||
def demarrer(self) -> None:
|
def demarrer(self) -> None:
|
||||||
"""Lance le programme GesMag."""
|
"""Lance le programme GesMag."""
|
||||||
self.font = ("Comfortaa", 14) # police par défaut
|
self.font = ("Comfortaa", 14) # police par défaut
|
||||||
Utilisateurs().creationTable() # on créer la base de donnée si elle n'existe pas déjà
|
Utilisateurs().creationTable() # on créer la table utilisateurs si elle n'existe pas déjà
|
||||||
|
Stock().creationTable() # on créer la table du stock si elle n'existe pas déjà
|
||||||
|
|
||||||
self._interfaceConnexion() # on créer la variable `self.f` qui est la frame a affiché
|
self._interfaceConnexion() # on créer la variable `self.f` qui est la frame a affiché
|
||||||
self.f.grid() # on affiche la frame
|
self.f.grid() # on affiche la frame
|
||||||
|
|
141
stock.py
Normal file
141
stock.py
Normal file
|
@ -0,0 +1,141 @@
|
||||||
|
from random import randint, uniform
|
||||||
|
|
||||||
|
from db import BaseDeDonnees
|
||||||
|
|
||||||
|
class Stock(BaseDeDonnees):
|
||||||
|
"""Gère une table "stock" pour une base de donnée donné."""
|
||||||
|
def __init__(self):
|
||||||
|
super().__init__(r"db.sqlite3")
|
||||||
|
|
||||||
|
def creationTable(self) -> None:
|
||||||
|
"""Créer la table qui stocker les stocks."""
|
||||||
|
requete = """
|
||||||
|
CREATE TABLE IF NOT EXISTS stocks (
|
||||||
|
id INTEGER PRIMARY KEY,
|
||||||
|
type TEXT,
|
||||||
|
nom TEXT,
|
||||||
|
quantite INTEGER,
|
||||||
|
prix REAL,
|
||||||
|
image_url TEXT
|
||||||
|
);
|
||||||
|
"""
|
||||||
|
self.requete(requete)
|
||||||
|
# Ajout d'un stock par défaut si aucun stock n'existe dans la base de donnée
|
||||||
|
if len(self.listStocks()) == 0:
|
||||||
|
defaut = {
|
||||||
|
"fruits legumes": [
|
||||||
|
"banane",
|
||||||
|
"orange",
|
||||||
|
"betterave",
|
||||||
|
"carottes",
|
||||||
|
"tomates",
|
||||||
|
"citron",
|
||||||
|
"kiwi",
|
||||||
|
"clementine",
|
||||||
|
"pomme",
|
||||||
|
"avocat"
|
||||||
|
],
|
||||||
|
"boulangerie": [
|
||||||
|
"brownie",
|
||||||
|
"baguette",
|
||||||
|
"pain au chocolat",
|
||||||
|
"croissant",
|
||||||
|
"macaron",
|
||||||
|
"millefeuille",
|
||||||
|
"paris-brest",
|
||||||
|
"opera",
|
||||||
|
"fraisier",
|
||||||
|
"eclair"
|
||||||
|
],
|
||||||
|
"boucherie poissnerie": [
|
||||||
|
"saucisson",
|
||||||
|
"côte de boeuf",
|
||||||
|
"langue de boeuf",
|
||||||
|
"collier de boeuf",
|
||||||
|
"entrecote",
|
||||||
|
"cabillaud",
|
||||||
|
"saumon",
|
||||||
|
"colin",
|
||||||
|
"bar",
|
||||||
|
"dorade"
|
||||||
|
],
|
||||||
|
"entretien": [
|
||||||
|
"nettoyant air comprimé",
|
||||||
|
"nettoyage anti-bactérien",
|
||||||
|
"nettoyant pour écran",
|
||||||
|
"nettoyant pour lunettes",
|
||||||
|
"pioche",
|
||||||
|
"pelle",
|
||||||
|
"lampe torche",
|
||||||
|
"gants",
|
||||||
|
"éponge",
|
||||||
|
"essuie-tout"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
for type in defaut:
|
||||||
|
for element in defaut[type]:
|
||||||
|
self.ajoutStock(type, element, randint(0, 10), round(uniform(2., 30.), 2), "noimage")
|
||||||
|
|
||||||
|
def ajoutStock(self, type: str, nom: str, quantite: int, prix: float, imageURL: str) -> list:
|
||||||
|
"""Ajoute un élément dans le stock et retourne l'ID de ce dernier."""
|
||||||
|
requete = """
|
||||||
|
INSERT INTO stocks (
|
||||||
|
type, nom, quantite, prix, image_url
|
||||||
|
) VALUES (
|
||||||
|
?, ?, ?, ?, ?
|
||||||
|
);
|
||||||
|
"""
|
||||||
|
self.requete(requete, [type.lower(), nom.lower(), quantite, prix, imageURL])
|
||||||
|
return self.affichageResultat(self.requete("SELECT last_insert_rowid();"))
|
||||||
|
|
||||||
|
def suppressionStocks(self, id: int) -> None:
|
||||||
|
"""Supprime un stock."""
|
||||||
|
requete = """
|
||||||
|
DELETE FROM stocks
|
||||||
|
WHERE id = ?
|
||||||
|
"""
|
||||||
|
self.requete(requete, id)
|
||||||
|
|
||||||
|
def listStocks(self) -> list:
|
||||||
|
"""Retourne la liste des éléments en stock."""
|
||||||
|
requete = """
|
||||||
|
SELECT id, type, nom, quantite, prix, image_url FROM stocks
|
||||||
|
"""
|
||||||
|
return self.affichageResultat(self.requete(requete))
|
||||||
|
|
||||||
|
def recuperationStock(self, id: int = None, nom: str = None) -> dict:
|
||||||
|
"""Retourne les informations d'un stock grâce à son ID ou son nom (ID en priorité)."""
|
||||||
|
recuperation = [
|
||||||
|
"id",
|
||||||
|
"type",
|
||||||
|
"nom",
|
||||||
|
"quantite",
|
||||||
|
"prix",
|
||||||
|
"image_url"
|
||||||
|
]
|
||||||
|
if not id: # si la variable `id` n'est pas définie
|
||||||
|
if not nom: # si la variable `nom` n'est pas définie
|
||||||
|
raise ValueError # Aucun élément renseigné
|
||||||
|
else: # si seul un nom est renseigné, c'est ce qu'on va utilisé
|
||||||
|
requete = f"""
|
||||||
|
SELECT {", ".join(recuperation)} FROM stocks
|
||||||
|
WHERE pseudo = ?
|
||||||
|
"""
|
||||||
|
stock = nom
|
||||||
|
else: # si un id est renseigné, c'est ce qu'on va utilisé
|
||||||
|
requete = f"""
|
||||||
|
SELECT {", ".join(recuperation)} FROM stocks
|
||||||
|
WHERE id = ?
|
||||||
|
"""
|
||||||
|
stock = id
|
||||||
|
return self.affichageResultatDictionnaire(recuperation, self.requete(requete, stock))
|
||||||
|
|
||||||
|
def stockExistant(self, stock: str) -> bool:
|
||||||
|
"""Vérifie si l"stock donnée existe déjà dans la base de donnée."""
|
||||||
|
requete = """
|
||||||
|
SELECT EXISTS (
|
||||||
|
SELECT 1 FROM stocks
|
||||||
|
WHERE name = ?
|
||||||
|
)
|
||||||
|
"""
|
||||||
|
return True if self.affichageResultat(self.requete(requete, stock.lower()))[0][0] == 1 else False
|
Reference in a new issue