Adding stock table in the db

This commit is contained in:
Mylloon 2021-11-24 17:53:17 +01:00
parent 764588ba65
commit a278b6bada
2 changed files with 144 additions and 1 deletions

View file

@ -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
View 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