TP_JO2024/medaille/models.py

60 lines
1.6 KiB
Python
Raw Normal View History

2024-03-27 14:17:05 +01:00
from pydantic import BaseModel, RootModel
from typing import Optional, List
import json
2024-03-27 15:20:10 +01:00
class Medaille(BaseModel):
2024-03-27 14:17:05 +01:00
"""
2024-03-27 15:20:10 +01:00
Modèle Medaille
2024-03-27 14:17:05 +01:00
"""
id: Optional[int] = 0
2024-03-27 15:20:10 +01:00
type: str # Or, Argent, Bronze
sport: str
categorie: str # ex : 80kg pour le judo
pays: str # Nom FR du pays
2024-03-27 14:17:05 +01:00
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)
2024-03-27 15:20:10 +01:00
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] = []
2024-03-27 14:17:05 +01:00
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)
2024-03-27 15:20:10 +01:00
for discipline in data:
self.root.append(Medaille(**discipline))
2024-03-27 14:17:05 +01:00
except FileNotFoundError:
2024-03-27 15:20:10 +01:00
print(f"Le fichier {path} n'existe pas")
2024-03-27 14:17:05 +01:00
def loadFromJsonData(self, data: str):
"""
Charge les données depuis une chaine json
:param data: Données json
:return: None
"""
data = json.loads(data)
2024-03-27 15:20:10 +01:00
for discipline in data:
self.root.append(Medaille(**discipline))