Skip to content

Commit a76377e

Browse files
committed
Rework _get_groups()
1 parent 4dc0121 commit a76377e

1 file changed

Lines changed: 17 additions & 8 deletions

File tree

plugwise/common.py

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -198,17 +198,16 @@ def _get_groups(self) -> None:
198198
return
199199

200200
for group in self._domain_objects.findall("./group"):
201-
members: list[str] = []
202201
group_id = group.get("id")
202+
if group_id is None:
203+
continue # pragma: no cover
204+
205+
if not (members := self._collect_members(group)):
206+
continue
207+
203208
group_name = group.find("name").text
204209
group_type = group.find("type").text
205-
group_appliances = group.findall("appliances/appliance")
206-
for item in group_appliances:
207-
# Check if members are not orphaned - stretch
208-
if item.get("id") in self.gw_entities:
209-
members.append(item.get("id"))
210-
211-
if group_type in GROUP_TYPES and members and group_id:
210+
if group_type in GROUP_TYPES:
212211
self.gw_entities[group_id] = {
213212
"dev_class": group_type,
214213
"model": "Group",
@@ -218,6 +217,16 @@ def _get_groups(self) -> None:
218217
}
219218
self._count += 5
220219

220+
def _collect_members(self, element: etree.Element) -> list[str]:
221+
"""Check and collect members."""
222+
members: list[str] = []
223+
group_appliances = element.findall("appliances/appliance")
224+
for item in group_appliances:
225+
if (member_id := item.get("id")) in self.gw_entities:
226+
members.append(member_id)
227+
228+
return members
229+
221230
def _get_lock_state(
222231
self, xml: etree.Element, data: GwEntityData, stretch_v2: bool = False
223232
) -> None:

0 commit comments

Comments
 (0)