Dernier morceau du plan d'état par joueur : le créateur choisit, à la création d'une variable globale ou d'un objet, si chaque joueur aura sa propre valeur/ses propres lignes (coché par défaut) ou si elle est explicitement PARTAGÉE par tous les joueurs (ex. un compteur de visiteurs global, un catalogue commun) — voir db/global_vars/create_global_variable.py et db/definitions/create_definition.py (Phase 1, 1er commit). routes/global_vars/create_global_var.py, routes/objects/object_new.py : lisent la case à cocher "per_player" du formulaire (absente => reste per_player=1, comportement par défaut). templates/game_dashboard.html : case à cocher sur les deux panneaux de création + colonne "Par joueur" dans les deux tableaux existants, pour que ce réglage (immuable après création, comme le nom d'une variable) reste visible. db/definitions/list_definitions.py appelait _definitions directement sans jamais migrer son schéma — un tableau de bord ouvert avant la toute première création/modification d'objet aurait affiché "Non — partagé" pour un objet en réalité per_player=1 (colonne absente => Undefined, donc faux en Jinja) : corrigé en appelant ensure_field_bounds_schema() ici aussi, comme le fait déjà create_definition.py/get_definition.py. Vérifié : 239 tests passent (2 nouveaux, dont un qui aurait détecté le bug ci-dessus). Phase 1 (état par joueur) est maintenant complète : couche db/, route publique /jouer/<slug>, et ce réglage créateur. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
24 lines
1.0 KiB
Python
24 lines
1.0 KiB
Python
from flask import request, redirect, url_for
|
|
|
|
import db
|
|
|
|
from core.flask_app import app
|
|
|
|
|
|
@app.route("/game/<slug>/variables/new", methods=["POST"])
|
|
def create_global_var(slug):
|
|
"""Depuis la page de gestion des variables (game_variables.html) —
|
|
idempotent par nom (voir db.create_global_variable), donc sans risque en
|
|
cas de double soumission."""
|
|
name = (request.form.get("name") or "").strip()
|
|
var_type = request.form.get("type") or "texte"
|
|
default_value = request.form.get("default_value") or ""
|
|
# État par joueur (Phase 1) : coché par défaut (une case DÉCOCHÉE
|
|
# explicitement rend la variable partagée par tous les joueurs, voir
|
|
# db/global_vars/create_global_variable.py) — absent du formulaire
|
|
# (jeux/pages qui n'ont pas encore ce champ) => reste per_player.
|
|
per_player = request.form.get("per_player", "1") == "1"
|
|
if name:
|
|
db.create_global_variable(slug, name, var_type, default_value, per_player=per_player)
|
|
return redirect(url_for("game_dashboard", slug=slug, tab="variables"))
|