Fix automatic mail import unable to be disabled once enabled

Fixed bug where unchecked automatic mail import checkbox was not
processed by the backend, preventing users from disabling the
automatic import after enabling it.

Root cause: HTML forms do not send unchecked checkbox values. The
existing check `if "auto_import_enabled" in request.form` would skip
updating the setting when the checkbox was unchecked.

Solution: Added import_form_touched flag to detect when the import
settings form is submitted, then update the checkbox value based on
presence (checked) or absence (unchecked) in form data.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
Ivo Oskamp 2026-02-05 22:15:38 +01:00
parent 948e9a49a5
commit 1d9f3662a1
2 changed files with 5 additions and 1 deletions

View File

@ -408,6 +408,7 @@ def settings():
if request.method == "POST": if request.method == "POST":
autotask_form_touched = any(str(k).startswith("autotask_") for k in (request.form or {}).keys()) autotask_form_touched = any(str(k).startswith("autotask_") for k in (request.form or {}).keys())
import_form_touched = any(str(k).startswith("auto_import_") or str(k).startswith("manual_import_") or str(k).startswith("ingest_eml_") for k in (request.form or {}).keys())
# NOTE: The Settings UI has multiple tabs with separate forms. # NOTE: The Settings UI has multiple tabs with separate forms.
# Only update values that are present in the submitted form, to avoid # Only update values that are present in the submitted form, to avoid
@ -505,7 +506,9 @@ def settings():
settings.daily_jobs_start_date = None settings.daily_jobs_start_date = None
# Import configuration # Import configuration
if "auto_import_enabled" in request.form: # Checkbox: only update when any import field is present (form was submitted)
# Unchecked checkboxes are not sent by browsers, so check import_form_touched
if import_form_touched:
settings.auto_import_enabled = bool(request.form.get("auto_import_enabled")) settings.auto_import_enabled = bool(request.form.get("auto_import_enabled"))
if "auto_import_interval_minutes" in request.form: if "auto_import_interval_minutes" in request.form:

View File

@ -32,6 +32,7 @@ This file documents all changes made to this project via Claude Code.
- If time entries exist: keeps current status unchanged (ticket remains open) - If time entries exist: keeps current status unchanged (ticket remains open)
### Fixed ### Fixed
- Automatic mail import can now be disabled in Settings after being enabled (fixed unchecked checkbox not being processed)
- Autotask "Link existing" search box now clears when opening the modal instead of retaining previous search text - Autotask "Link existing" search box now clears when opening the modal instead of retaining previous search text
- Autotask customer mapping search box now clears when opening the edit modal instead of retaining previous search text - Autotask customer mapping search box now clears when opening the edit modal instead of retaining previous search text
- Autotask ticket resolution update now correctly preserves exact field values from GET response in PUT payload. - Autotask ticket resolution update now correctly preserves exact field values from GET response in PUT payload.