from pydantic import BaseModel, RootModel
from typing import Optional, List
import json

class Discipline(BaseModel):
    """
    Modèle Discipline
    """
    id: Optional[int] = 0
    intitule: str
    type: str
    description: str
    logo: str

    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 ListeDiscipline(RootModel):
    root: List[Discipline] = []
    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(Discipline(**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(Discipline(**discipline))