- admin_allowlist.py: list_admin_ids / set_admin_ids (atomic sync of the allowlist inside one transaction under the connection lock; refuses empty targets so the last admin can never be removed and the allowlist can never be emptied — fail closed) and seed_setup_admin (seeds ONLY an empty allowlist: stored entry-data copy first — disaster recovery for a lost database — else the HA user who completed the config flow from the entry context; non-empty lists are never resurrected). - __init__.py: both setup paths (first setup and the reopened-record path) seed after migrations; a failed seed closes the database and re-raises through the existing error handling. - options_flow.py: the admin picker is a multi-select of EXISTING HA users (hass.auth.async_get_users), defaulted to the current database allowlist, membership-checked at the schema level and backed up on the raw-input path; empty selections are refused (no_admins), unknown ids rejected (invalid_admin); the selection is applied to the DB when the runtime record is reachable and always stored on the entry as the recovery copy. Submissions without the key (legacy raw payloads) keep the three-key behaviour untouched. - const.CONF_ADMIN_USER_IDS; strings + translations for the field and the two errors; conftest entries gain a context dict (HA's entry context carries the flow user). - Tests: 20 allowlist business tests (round-trips, refusal matrix, seed precedence and narrowed-list persistence), 5 picker flow tests, 3 setup-seeding lifecycle tests. Suite: 901 passed.
38 lines
1.1 KiB
JSON
38 lines
1.1 KiB
JSON
{
|
|
"title": "NestQuest",
|
|
"config": {
|
|
"step": {
|
|
"user": {
|
|
"title": "Add NestQuest",
|
|
"description": "Set up NestQuest to start coordinating the household. No additional configuration is required."
|
|
}
|
|
},
|
|
"abort": {
|
|
"single_instance_allowed": "NestQuest is already configured. Only a single instance is allowed."
|
|
},
|
|
"create_entry": {
|
|
"default": "NestQuest was successfully configured."
|
|
}
|
|
},
|
|
"options": {
|
|
"step": {
|
|
"init": {
|
|
"title": "NestQuest Settings",
|
|
"description": "Adjust how NestQuest plans, rolls over days, and idles its panel.",
|
|
"data": {
|
|
"horizon_days": "Generation horizon (days)",
|
|
"day_rollover_time": "Day rollover time (HH:MM)",
|
|
"panel_idle_timeout": "Panel idle timeout (seconds)",
|
|
"admin_user_ids": "Admin users (parents)"
|
|
}
|
|
}
|
|
},
|
|
"errors": {
|
|
"invalid": "Invalid value.",
|
|
"invalid_time": "Time must use 24-hour HH:MM format.",
|
|
"no_admins": "Select at least one admin user; an empty allowlist would lock everyone out.",
|
|
"invalid_admin": "Invalid admin selection."
|
|
}
|
|
}
|
|
}
|