diff --git a/CHANGELOG.md b/CHANGELOG.md index 9d93e7e..82d2f32 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,10 @@ # Changelog +## 2026-10-08 11:34 CEST — fix(python): return months_to_show from /api/adults and /api/juniors + +- Go already returned `months_to_show` in the JSON API; Python only passed it to its HTML templates. Backported the key so the API contract matches and `make parity` reports 3/3 routes. +- Key files: `legacy/app.py`, `legacy/tests/test_app.py`. + ## 2026-10-08 11:34 CEST — fix: VS is always a string, on read and on write - Go rendered numeric sheet cells with `fmt.Sprint`, so a numeric VS came out as `2.609767878e+09`. Text columns of the payments sheet now go through `sheets.CellString` (plain digits); bank inference uses it too. diff --git a/legacy/app.py b/legacy/app.py index d83c0f8..6e186ee 100644 --- a/legacy/app.py +++ b/legacy/app.py @@ -179,7 +179,9 @@ def api_adults(): datetime.now().strftime("%Y-%m"), attendance_url=attendance_url, payments_url=payments_url, bank_account=BANK_ACCOUNT, ) - return jsonify(_unwrap_view_model_for_api(vm)) + out = _unwrap_view_model_for_api(vm) + out["months_to_show"] = MONTHS_TO_SHOW + return jsonify(out) @app.route("/api/juniors") def api_juniors(): @@ -203,7 +205,9 @@ def api_juniors(): datetime.now().strftime("%Y-%m"), attendance_url=attendance_url, payments_url=payments_url, bank_account=BANK_ACCOUNT, ) - return jsonify(_unwrap_view_model_for_api(vm)) + out = _unwrap_view_model_for_api(vm) + out["months_to_show"] = MONTHS_TO_SHOW + return jsonify(out) @app.route("/api/payments") def api_payments(): diff --git a/legacy/tests/test_app.py b/legacy/tests/test_app.py index 2149ae3..a64f532 100644 --- a/legacy/tests/test_app.py +++ b/legacy/tests/test_app.py @@ -6,7 +6,7 @@ from app import app EXPECTED_ADULTS_KEYS = { "months", "raw_months", "results", "totals", "member_data", "month_labels", "raw_payments", "credits", "debts", "unmatched", "attendance_url", - "payments_url", "bank_account", "current_month", + "payments_url", "bank_account", "current_month", "months_to_show", } EXPECTED_JUNIORS_KEYS = EXPECTED_ADULTS_KEYS EXPECTED_PAYMENTS_KEYS = {"grouped_payments", "sorted_people", "attendance_url", "payments_url"} @@ -139,6 +139,7 @@ class TestWebApp(unittest.TestCase): self.assertIsInstance(data['member_data'], dict) self.assertIsInstance(data['month_labels'], dict) self.assertIsInstance(data['raw_payments'], dict) + self.assertIsInstance(data['months_to_show'], int) @patch('app.get_cached_data', side_effect=_bypass_cache) @patch('app.fetch_sheet_data') @@ -166,6 +167,7 @@ class TestWebApp(unittest.TestCase): self.assertIsInstance(data['member_data'], dict) self.assertIsInstance(data['month_labels'], dict) self.assertIsInstance(data['raw_payments'], dict) + self.assertIsInstance(data['months_to_show'], int) @patch('app.get_cached_data', side_effect=_bypass_cache) @patch('app.fetch_sheet_data')