2021-11-29 20:24:27 +01:00
|
|
|
import csv
|
|
|
|
|
|
|
|
from datetime import date, timedelta
|
|
|
|
|
2021-11-29 14:11:25 +01:00
|
|
|
from users import Utilisateurs
|
|
|
|
|
|
|
|
class Stats(Utilisateurs):
|
2021-11-29 14:21:23 +01:00
|
|
|
"""Gère les statistiques et son export en format CSV."""
|
2021-11-29 21:01:00 +01:00
|
|
|
def creationCSV(self, force: bool = False):
|
|
|
|
"""
|
|
|
|
Créer le fichier `CSV` qui stockera les statistiques pour tous les utilisateurs.
|
|
|
|
|
|
|
|
Possibilité de forcer la création (càd même si le fichier existe déjà) en renseignant
|
|
|
|
`force = True`
|
|
|
|
"""
|
|
|
|
if not self.fichierExiste("stats.csv") or force:
|
2021-11-29 20:24:27 +01:00
|
|
|
entete = ["id", "pseudo"]
|
|
|
|
dateAujourdHui = date.today()
|
|
|
|
for _ in range(0, 8):
|
2021-11-29 21:01:00 +01:00
|
|
|
entete.append(dateAujourdHui.strftime("%Y/%m/%d"))
|
2021-11-29 20:24:27 +01:00
|
|
|
dateAujourdHui = dateAujourdHui - timedelta(days=1)
|
|
|
|
|
|
|
|
with open("stats.csv", 'w') as f:
|
|
|
|
writer = csv.writer(f)
|
|
|
|
writer.writerow(entete)
|
2021-11-29 14:11:25 +01:00
|
|
|
|
|
|
|
def miseAJourStatsUtilisateur(self, utilisateurID: int, prix: float):
|
|
|
|
"""
|
|
|
|
Récupère le prix d'une transaction et l'ajoute au total d'un utilisateur.
|
|
|
|
|
2021-11-29 14:21:23 +01:00
|
|
|
- si aucune date n'est précisé dans la base de donnée d'un utilisateur,
|
|
|
|
alors il n'a jamais enregistré de statistiques et on procède normalement
|
|
|
|
- si une date est déjà renseigné :
|
|
|
|
- si la date correspond à la date d'aujourd'hui, on procède normalement
|
|
|
|
- si la date ne correspond pas, on enregistre ce qu'il y a dans la base de donnée
|
2021-11-29 14:11:25 +01:00
|
|
|
dans un fichier `CSV`, ensuite on écrase l'ancien prix par `0` et la date par celle
|
|
|
|
d'aujourd'hui, ensuite on procède normalement
|
|
|
|
|
2021-11-29 14:21:23 +01:00
|
|
|
Procéder normalement consiste à ajouter le prix au prix totale stocké dans la base de donnée.
|
|
|
|
"""
|
2021-11-29 21:01:00 +01:00
|
|
|
self.miseAJourDatesCSV()
|
|
|
|
aujourdHui = date.today().strftime("%Y/%m/%d")
|
|
|
|
|
2021-11-29 20:24:27 +01:00
|
|
|
print(prix)
|
2021-11-29 14:21:23 +01:00
|
|
|
pass
|
|
|
|
|
2021-11-29 20:24:27 +01:00
|
|
|
def exporteCSV(self, utilisateurID: int, mode: bool = False):
|
2021-11-29 14:21:23 +01:00
|
|
|
"""
|
|
|
|
Exporte les statistiques d'un utilisateur dans un fichier `CSV`.
|
|
|
|
|
|
|
|
Deux modes :
|
|
|
|
- `False` : exporte dans le fichier globale (qui contient tous les utilisateurs, utilisés
|
|
|
|
par l'histogramme de l'interface du Manager)
|
2021-11-29 20:24:27 +01:00
|
|
|
- si le fichier `CSV` ne contient aucune donnée de l'utilisateur, on y rajoute les
|
|
|
|
données de l'utilisateur
|
2021-11-29 14:21:23 +01:00
|
|
|
- ne garde qu'un historique des 7 derniers jours maximum
|
|
|
|
- `True` : exporte dans un fichier séparé l'utilisateur choisie (demande à l'utilisateur
|
|
|
|
où il souhaite que le fichier soit exporté) - (utilisé par le bouton d'exportation de
|
|
|
|
l'interface du caissier)
|
|
|
|
- A savoir : n'exporte que l'état actuel de la base de donnée
|
2021-11-29 14:11:25 +01:00
|
|
|
"""
|
|
|
|
pass
|
2021-11-29 20:24:27 +01:00
|
|
|
|
|
|
|
def miseAJourDatesCSV(self):
|
|
|
|
"""Mets-à-jour les dates trop anciennes du fichier globales `CSV`."""
|
|
|
|
with open("stats.csv", 'r') as f:
|
2021-11-29 21:01:00 +01:00
|
|
|
fichier = list(csv.DictReader(f))
|
|
|
|
if fichier == []: # si fichier vide
|
|
|
|
self.creationCSV(True) # on recréer le fichier dans le doute
|