40 lines
1.3 KiB
Python
40 lines
1.3 KiB
Python
import json
|
|
from pathlib import Path
|
|
|
|
DATA_DIR = Path(__file__).parent / "data"
|
|
|
|
REQUIRED_FILES = {
|
|
"identity.json": ["first_name", "last_name", "email"],
|
|
"context.json": ["title", "summary"],
|
|
"experiences.json": [],
|
|
"languages.json": [],
|
|
"hobbies.json": [],
|
|
"hyperlinks.json": []
|
|
}
|
|
|
|
def load_json_data() -> dict:
|
|
data = {}
|
|
if not DATA_DIR.exists():
|
|
raise FileNotFoundError(f"Le dossier '{DATA_DIR}' n'existe pas.")
|
|
|
|
for filename, required_keys in REQUIRED_FILES.items():
|
|
file_path = DATA_DIR / filename
|
|
if not file_path.exists():
|
|
raise FileNotFoundError(f"Fichier requis manquant : '{filename}' dans le dossier data/")
|
|
|
|
with open(file_path, "r", encoding="utf-8") as f:
|
|
try:
|
|
content = json.load(f)
|
|
except json.JSONDecodeError as e:
|
|
raise ValueError(f"Erreur de syntaxe JSON dans '{filename}' : {e}")
|
|
|
|
# Validation des clés requises
|
|
if isinstance(content, dict):
|
|
for key in required_keys:
|
|
if key not in content or not str(content[key]).strip():
|
|
raise KeyError(f"Clé manquante ou vide '{key}' dans '{filename}'")
|
|
|
|
key_name = filename.replace(".json", "")
|
|
data[key_name] = content
|
|
|
|
return data |