from pydantic import BaseModel, RootModel from typing import Optional, List import json class Athlete(BaseModel): """ Modèle Athlète """ id: Optional[int] = 0 prenom: str nom: str pays: str sexe: str = "N/A" image: str = "https://cdn.pixabay.com/photo/2015/10/05/22/37/blank-profile-picture-973460_640.png" disciplines: Optional[List[int]] = None records: Optional[List[int]] = None 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) class ListeAthlete(RootModel): root: List[Athlete] = [] 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 athlete in data: self.root.append(Athlete(**athlete)) 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 athlete in data: self.root.append(Athlete(**athlete))