from pydantic import BaseModel, RootModel from typing import Optional, List import json class Medaille(BaseModel): """ Modèle Medaille """ id: Optional[int] = 0 type: str # Or, Argent, Bronze sport: str categorie: str # ex : 80kg pour le judo pays: str # Nom FR du pays def loadFromJsonData(self, data: str): """ Charge les données depuis une chaine json :param data: Données json :return: None """ data = json.loads(data) for key, value in data.items(): setattr(self, key, value) def validate(self) -> bool: """ Valide les données :return: True si les données sont valides, False sinon """ if self.type not in ["Or", "Argent", "Bronze"]: return False return True class ListeMedaille(RootModel): root: List[Medaille] = [] def loadFromJson(self, path: str): """ Charge les données depuis un fichier json :param path: Chemin du fichier json :return: None """ try: with open(path) as f: data = json.load(f) for discipline in data: self.root.append(Medaille(**discipline)) except FileNotFoundError: print(f"Le fichier {path} n'existe pas") def loadFromJsonData(self, data: str): """ Charge les données depuis une chaine json :param data: Données json :return: None """ data = json.loads(data) for discipline in data: self.root.append(Medaille(**discipline))