TP_JO2024/medaille/models.py
2024-03-27 15:20:10 +01:00

60 lines
No EOL
1.6 KiB
Python

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))