Files
Forge-Engine/db/__init__.py
T
williamandClaude Sonnet 5 864ae697fd Ajoute le système de modèles/thèmes de document ("Utiliser un modèle")
Nouveau bouton dans le topbar de l'éditeur, à côté d'Aperçu, qui ouvre
une modale listant les thèmes du catalogue (document_engine/themes/).
Cliquer un thème charge un VRAI aperçu (rendu serveur réel dans un
iframe, jamais une resucée CSS côté client) avec le choix de garder le
contenu actuel ou de le remplacer par le contenu de démonstration du
modèle.

Architecture pensée pour une centaine de thèmes futurs : chaque thème
est une feuille de style externe (static/document/themes/<id>.css) qui
habille les classes fixes du moteur, jamais du code qui en changerait
la structure. Premier thème implémenté pour valider le mécanisme :
"Sécurité Incendie" (6 pages de contenu réel, quiz inclus).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-24 09:12:57 +02:00

159 lines
6.0 KiB
Python

"""
db — toute la logique base de données du moteur Forge, organisée en un
sous-module par responsabilité (un fichier = une fonction, un dossier = un
domaine) plutôt qu'un seul gros fichier. Ce fichier réexporte l'intégralité
de l'API publique historique : le reste du moteur continue simplement
d'écrire `import db` puis `db.ma_fonction(...)`, sans rien savoir de cette
organisation interne.
Chaque JEU créé a SA PROPRE base SQLite (fichier .db dans son dossier de
projet). Cette base contient :
- des tables "méta" (_definitions, _fields) qui décrivent les objets que
l'utilisateur a définis via l'interface (l'équivalent d'un schéma de
base de données, mais construit à la souris plutôt qu'en SQL) ;
- une VRAIE table SQL par objet défini (obj_<nom>), avec des colonnes du
bon type SQLite selon le type choisi pour chaque champ, y compris des
colonnes de clé étrangère pour les champs de type "relation".
Rien n'est une simulation : créer une "définition d'objet" avec des champs
exécute un vrai CREATE TABLE, et remplir le formulaire généré exécute un
vrai INSERT dans cette table.
"""
from .assert_not_none import assert_not_none
from .connection import connect
from .constants import FIELD_TYPES, GLOBAL_VARIABLE_TYPES, PROJECTS_DIR, SCORE_STATUS_CHOICES, SCORE_STATUS_LABELS
from .custom_events.create_custom_event import create_custom_event
from .custom_events.get_custom_event import get_custom_event
from .custom_events.list_custom_events import list_custom_events
from .custom_events.update_custom_event import update_custom_event
from .db_path import db_path
from .definitions.create_definition import create_definition
from .definitions.definitions_referencing import definitions_referencing
from .definitions.delete_definition import delete_definition
from .definitions.get_definition import get_definition
from .definitions.list_definitions import list_definitions
from .dialogue_lines import QUESTION_REWARD_TYPES, sanitize_dialogue_lines, sum_question_rewards
from .game_dir import game_dir
from .games.create_game import create_game
from .games.delete_game import delete_game
from .games.game_meta import game_meta
from .games.game_type_catalog import (
DEFAULT_ONBOARDING_TYPE,
ONBOARDING_TYPES,
get_onboarding_type,
get_onboarding_type_raw,
is_restricted,
set_onboarding_type,
)
from .games.get_game_type import DEFAULT_GAME_TYPE, get_game_type
from .games.get_scorm_version import get_scorm_version
from .games.get_success_threshold import get_success_threshold
from .games.get_xapi_settings import get_xapi_settings
from .games.list_games import list_games
from .games.move_game import move_game
from .games.set_scorm_version import set_scorm_version
from .games.set_success_threshold import set_success_threshold
from .games.set_xapi_settings import set_xapi_settings
from .games.update_game_name import update_game_name
from .global_vars.create_global_variable import create_global_variable
from .global_vars.delete_global_variable import delete_global_variable
from .global_vars.delete_global_variable_by_id import delete_global_variable_by_id
from .global_vars.ensure_global_vars_schema import PLAYER_SHARED
from .global_vars.get_global_variable import get_global_variable
from .global_vars.list_global_variables import list_global_variables
from .global_vars.list_global_variables_for_player import list_global_variables_for_player
from .global_vars.update_global_variable import update_global_variable
from .global_vars.update_global_variable_value import update_global_variable_value
from .json_for_script import json_for_script
from .rows.delete_row import delete_row
from .rows.get_row import get_row
from .rows.insert_row import insert_row
from .rows.list_rows import list_rows
from .rows.update_row import update_row
from .rows.update_row_field import update_row_field
from .scoring.get_score import get_score
from .scoring.set_score_value import set_score_value
from .scoring.set_status import set_status
from .slugify import slugify
from .supports.create_support import create_support
from .supports.delete_support import delete_support
from .supports.get_document_theme import get_document_theme
from .supports.list_supports import list_supports
from .supports.set_document_theme import set_document_theme
from .supports.support_dir import support_dir
from .supports.support_meta import support_meta
from .table_name_for import table_name_for
__all__ = [
"PROJECTS_DIR",
"FIELD_TYPES",
"GLOBAL_VARIABLE_TYPES",
"PLAYER_SHARED",
"SCORE_STATUS_CHOICES",
"SCORE_STATUS_LABELS",
"get_score",
"set_score_value",
"set_status",
"slugify",
"table_name_for",
"json_for_script",
"assert_not_none",
"game_dir",
"db_path",
"connect",
"list_games",
"game_meta",
"create_game",
"update_game_name",
"delete_game",
"move_game",
"get_game_type",
"DEFAULT_GAME_TYPE",
"get_xapi_settings",
"set_xapi_settings",
"get_success_threshold",
"set_success_threshold",
"get_scorm_version",
"set_scorm_version",
"create_support",
"list_supports",
"support_dir",
"support_meta",
"delete_support",
"get_document_theme",
"set_document_theme",
"ONBOARDING_TYPES",
"DEFAULT_ONBOARDING_TYPE",
"get_onboarding_type",
"get_onboarding_type_raw",
"set_onboarding_type",
"is_restricted",
"list_definitions",
"get_definition",
"create_definition",
"definitions_referencing",
"delete_definition",
"list_rows",
"insert_row",
"get_row",
"update_row",
"update_row_field",
"delete_row",
"list_global_variables",
"list_global_variables_for_player",
"get_global_variable",
"create_global_variable",
"update_global_variable_value",
"update_global_variable",
"delete_global_variable",
"delete_global_variable_by_id",
"list_custom_events",
"get_custom_event",
"create_custom_event",
"update_custom_event",
"sanitize_dialogue_lines",
"QUESTION_REWARD_TYPES",
"sum_question_rewards",
]