From 97aeb23d317303dfad0ee6d6df0150db984ea454 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luk=C3=A1=C5=A1=20Kucharczyk?= Date: Sun, 21 Jun 2026 19:13:33 +0200 Subject: [PATCH] feat(add-game): sync original year from year released until dirty (#35) (#83) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix(make): run migrate before loadplatforms in init target make init loaded platform fixtures without first creating the database schema, failing with 'no such table: games_platform' on a clean repo. Co-Authored-By: Claude Opus 4.8 (1M context) * feat(add-game): sync original year from year released until dirty (#35) Mirror year_released into original_year_released live as the user types, stopping once original is edited directly — same sync-until-dirty pattern already used for name -> sort_name. Reorder the two year fields so year_released renders first, otherwise the user would fill original first and negate the sync. Co-Authored-By: Claude Opus 4.8 (1M context) --------- Co-authored-by: Claude Opus 4.8 (1M context) --- Makefile | 1 + games/forms.py | 2 +- ts/add_game.ts | 6 ++++++ 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index f843b09..c4d13aa 100644 --- a/Makefile +++ b/Makefile @@ -20,6 +20,7 @@ init: uv python install $(PYTHON_VERSION) uv sync pnpm install + $(MAKE) migrate $(MAKE) loadplatforms server: gen-element-types diff --git a/games/forms.py b/games/forms.py index 5b86573..2fd885d 100644 --- a/games/forms.py +++ b/games/forms.py @@ -383,8 +383,8 @@ class GameForm(PrimitiveWidgetsMixin, forms.ModelForm): "name", "sort_name", "platform", - "original_year_released", "year_released", + "original_year_released", "status", "mastered", "wikidata", diff --git a/ts/add_game.ts b/ts/add_game.ts index 82e7395..b653245 100644 --- a/ts/add_game.ts +++ b/ts/add_game.ts @@ -7,6 +7,12 @@ const syncData = [ target: "#id_sort_name", target_value: "value", }, + { + source: "#id_year_released", + source_value: "value", + target: "#id_original_year_released", + target_value: "value", + }, ]; // Scope to the add form (#add-form), not "form": the first
on the page