Skip to content

feat(characters): éditer les traits/actions existants (#148, PR 2/4) - #167

Merged
RebelliousSmile merged 1 commit into
mainfrom
claude/plan-derniere-issue-l94t6x
Jul 21, 2026
Merged

feat(characters): éditer les traits/actions existants (#148, PR 2/4)#167
RebelliousSmile merged 1 commit into
mainfrom
claude/plan-derniere-issue-l94t6x

Conversation

@RebelliousSmile

Copy link
Copy Markdown
Owner

Deuxième PR de #148 — volet ③ éditer les traits/actions existants. Prérequis à la persistance par ligne à la création (② en PR 3).

Pourquoi

L'éditeur (traits_editor) ne proposait que créer et supprimer un lot / trait / action. Pour corriger une valeur, un nom ou une condition, il fallait supprimer puis recréer. On ajoute l'édition en place.

Changements

  • Vues : trait_set_edit, trait_edit, action_edit (GET charge un formulaire inline dans le bloc, POST sauve) + trait_set_card (GET, cible du bouton « Annuler »). Toutes suivent le patron existant : swap du bloc entier #set-<pk> (hx-target / outerHTML), jamais un layout cassé. Dual GET/POST → garde interne if request.method, pas de @require_POST.
  • trait_set.html : chaque lot / trait / action affiche un bouton crayon ✎, ou bascule en formulaire inline quand il est en édition (editing_kind/editing_pk). Réutilise TraitSetForm / TraitForm / ActionForm. La valeur d'un trait s'édite via un input number simple (vide → None).
  • 4 routes ajoutées. Aucune migration (pas de champ modèle).
  • Frontière d'archi respectée : rien n'est évalué, on édite du texte affiché.

Tests & vérification

  • trait_edit GET rend le form (valeur pré-remplie) · POST met à jour name/value/note · vidage valeur → None · trait_set_edit renomme le lot · action_edit met à jour name/condition/outcome/traits · trait_set_card rend le bloc propre · étranger interdit (403).
  • manage.py check · pytest (26 traits + i18n) · ruff check . + ruff format --check . · mypy suddenly/ · design lint trait_set.html.
  • i18n fr/en + .mo.

Reste #148

  • PR 3 — ② création identity-first / persistance par ligne (build sur cette PR).
  • PR 4 — ⑤ conséquences conditionnelles (nouveau modèle ActionOutcome).

Refs #148

🤖 Generated with Claude Code


Generated by Claude Code

PR 2 de #148 — ③ éditer les traits/actions existants. L'éditeur ne
faisait que créer + supprimer ; il fallait supprimer puis recréer pour
corriger. On ajoute l'édition en place.

- Vues trait_set_edit / trait_edit / action_edit (GET charge un form
  inline, POST sauve) + trait_set_card (GET, cible « Annuler »). Même
  patron que l'existant : tout swappe le bloc entier #set-<pk>.
- trait_set.html : affichage + bouton crayon par lot/trait/action, ou
  formulaire inline si en édition. Réutilise TraitSetForm/TraitForm/
  ActionForm. Valeur éditée via input number simple.
- 4 routes ajoutées. Aucune migration.
- Tests édition (get form, update, vidage valeur→None, rename lot,
  action multi-traits, étranger interdit). i18n fr/en.

Prérequis à la persistance par ligne à la création (② PR 3).

Refs #148

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01YBRFVUtmBW3YSP8Yd2uNpB
@RebelliousSmile
RebelliousSmile merged commit 192dec9 into main Jul 21, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants