Skip to content

Commit 7c3eb19

Browse files
authored
Fix issues() template method returns non active issues (home-assistant#156274)
1 parent 70c6fac commit 7c3eb19

File tree

2 files changed

+54
-1
lines changed

2 files changed

+54
-1
lines changed

homeassistant/helpers/template/__init__.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1304,7 +1304,11 @@ def issues(hass: HomeAssistant) -> dict[tuple[str, str], dict[str, Any]]:
13041304
"""Return all open issues."""
13051305
current_issues = ir.async_get(hass).issues
13061306
# Use JSON for safe representation
1307-
return {k: v.to_json() for (k, v) in current_issues.items()}
1307+
return {
1308+
key: issue_entry.to_json()
1309+
for (key, issue_entry) in current_issues.items()
1310+
if issue_entry.active
1311+
}
13081312

13091313

13101314
def issue(hass: HomeAssistant, domain: str, issue_id: str) -> dict[str, Any] | None:

tests/helpers/template/test_init.py

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2878,6 +2878,55 @@ async def test_issues(hass: HomeAssistant, issue_registry: ir.IssueRegistry) ->
28782878
assert_result_info(info, {})
28792879
assert info.rate_limit is None
28802880

2881+
issue = ir.IssueEntry(
2882+
active=False,
2883+
breaks_in_ha_version="2025.12",
2884+
created=dt_util.utcnow(),
2885+
data=None,
2886+
dismissed_version=None,
2887+
domain="test",
2888+
is_fixable=False,
2889+
is_persistent=False,
2890+
issue_domain="test",
2891+
issue_id="issue 2",
2892+
learn_more_url=None,
2893+
severity="warning",
2894+
translation_key="abc_1234",
2895+
translation_placeholders={"abc": "123"},
2896+
)
2897+
# Add non active issue
2898+
issue_registry.issues[("test", "issue 2")] = issue
2899+
# Test non active issue is omitted
2900+
issue_entry = issue_registry.async_get_issue("test", "issue 2")
2901+
assert issue_entry
2902+
issue_2_created = issue_entry.created
2903+
assert issue_entry and not issue_entry.active
2904+
info = render_to_info(hass, "{{ issues() }}")
2905+
assert_result_info(info, {})
2906+
assert info.rate_limit is None
2907+
2908+
# Load and activate the issue
2909+
ir.async_create_issue(
2910+
hass=hass,
2911+
breaks_in_ha_version="2025.12",
2912+
data=None,
2913+
domain="test",
2914+
is_fixable=False,
2915+
is_persistent=False,
2916+
issue_domain="test",
2917+
issue_id="issue 2",
2918+
learn_more_url=None,
2919+
severity="warning",
2920+
translation_key="abc_1234",
2921+
translation_placeholders={"abc": "123"},
2922+
)
2923+
activated_issue_entry = issue_registry.async_get_issue("test", "issue 2")
2924+
assert activated_issue_entry and activated_issue_entry.active
2925+
assert issue_2_created == activated_issue_entry.created
2926+
info = render_to_info(hass, "{{ issues()['test', 'issue 2'] }}")
2927+
assert_result_info(info, activated_issue_entry.to_json())
2928+
assert info.rate_limit is None
2929+
28812930

28822931
async def test_issue(hass: HomeAssistant, issue_registry: ir.IssueRegistry) -> None:
28832932
"""Test issue function."""

0 commit comments

Comments
 (0)