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 users import Utilisateurs # import de mon fichier pour gérer la base de donnée
|
||||
from stock import Stock
|
||||
|
||||
class GesMag:
|
||||
"""Programme de Gestion d'une caise de magasin."""
|
||||
|
@ -16,7 +17,8 @@ class GesMag:
|
|||
def demarrer(self) -> None:
|
||||
"""Lance le programme GesMag."""
|
||||
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.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