This repository has been archived on 2022-03-31. You can view files and clone it, but cannot push or open issues or pull requests.
GesMag/stats.py

72 lines
3.1 KiB
Python

import csv
from datetime import date, timedelta
from users import Utilisateurs
class Stats(Utilisateurs):
"""Gère les statistiques et son export en format CSV."""
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:
entete = ["id", "pseudo"]
dateAujourdHui = date.today() - timedelta(days=7)
for _ in range(0, 8):
entete.append(dateAujourdHui.strftime("%Y/%m/%d"))
dateAujourdHui = dateAujourdHui + timedelta(days=1)
with open("stats.csv", 'w') as f:
fichier = csv.writer(f)
fichier.writerow(entete)
def miseAJourStatsUtilisateur(self, utilisateurID: int, prix: float):
"""
Récupère le prix d'une transaction et l'ajoute au total d'un utilisateur.
- 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
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
Procéder normalement consiste à ajouter le prix au prix totale stocké dans la base de donnée.
"""
self.miseAJourDatesCSV()
aujourdHui = date.today().strftime("%Y/%m/%d")
print(prix)
pass
def exporteCSV(self, chemin: str, utilisateurID: int):
"""
Exporte les statistiques d'un utilisateur dans un fichier `CSV`.
- N'exporte que les statistiques du jour.
"""
donnees = self.recuperationDonneesCSV(utilisateurID)
aujourdHui = date.today().strftime("%Y/%m/%d")
with open(chemin, 'w') as f:
fichier = csv.writer(f)
fichier.writerow(["ID Utilisateur", f"Totales des ventes du jour ({aujourdHui})"])
if len(donnees) > 0: # si il y a des données enregistrées
fichier.writerow([utilisateurID, donnees[aujourdHui]])
else:
fichier.writerow([utilisateurID, "Aucune ventes enregistrée"])
def recuperationDonneesCSV(self, utilisateurID: int) -> dict:
"""Renvoie les informations contenu dans le fichier `CSV` globale."""
with open("stats.csv", 'r') as f:
return list(csv.DictReader(f))
def miseAJourDatesCSV(self):
"""Mets-à-jour les dates trop anciennes du fichier globales `CSV`."""
with open("stats.csv", 'r') as f:
fichier = list(csv.DictReader(f))
if fichier == []: # si fichier vide
self.creationCSV(True) # on recréer le fichier dans le doute