From d42b540e16466f2329d215ba69012581abe555df Mon Sep 17 00:00:00 2001 From: Matt Johnson Date: Tue, 19 May 2026 00:14:33 +0000 Subject: [PATCH] refactor(wizard): use dynamic cadence validation Update wizard POST handler to use the same dynamic cadence validation pattern as the adapter edit form: - Use AdapterConfig.model_fields["cadence_s"].metadata[0].ge for min bound - Remove hardcoded 60-3600 range check - Remove min/max attributes from setup_adapters.html template No tests in test_wizard.py referenced the old cadence range. Co-Authored-By: Claude Opus 4.5 --- src/central/gui/routes.py | 10 +++++++--- src/central/gui/templates/setup_adapters.html | 2 +- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/central/gui/routes.py b/src/central/gui/routes.py index 395ac4d..70e88e9 100644 --- a/src/central/gui/routes.py +++ b/src/central/gui/routes.py @@ -763,12 +763,16 @@ async def setup_adapters_submit(request: Request) -> Response: # Parse enabled enabled = f"{adapter_name}_enabled" in form - # Parse cadence + # Parse cadence using AdapterConfig field constraint cadence_str = form.get(f"{adapter_name}_cadence_s", "") try: cadence_s = int(cadence_str) - if cadence_s < 60 or cadence_s > 3600: - errors[f"{adapter_name}_cadence_s"] = "Cadence must be between 60 and 3600 seconds" + from central.config_models import AdapterConfig + min_cadence = AdapterConfig.model_fields["cadence_s"].metadata[0].ge + if cadence_s < min_cadence: + errors[f"{adapter_name}_cadence_s"] = ( + f"Input should be greater than or equal to {min_cadence}" + ) except ValueError: errors[f"{adapter_name}_cadence_s"] = "Cadence must be a valid integer" cadence_s = current.get("cadence_s", 300) diff --git a/src/central/gui/templates/setup_adapters.html b/src/central/gui/templates/setup_adapters.html index de3f8c2..f80c6e2 100644 --- a/src/central/gui/templates/setup_adapters.html +++ b/src/central/gui/templates/setup_adapters.html @@ -45,7 +45,7 @@ + > {% if errors and errors.get(adapter.name + '_cadence_s') %} {{ errors[adapter.name + '_cadence_s'] }} {% endif %}