Skip to content

Commit 468d451

Browse files
committed
Improve _get_groups()
1 parent 6a1c597 commit 468d451

File tree

1 file changed

+11
-10
lines changed

1 file changed

+11
-10
lines changed

plugwise/common.py

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -203,24 +203,20 @@ def _get_groups(self) -> None:
203203
return
204204

205205
for group in self._domain_objects.findall("./group"):
206-
members: list[str] = []
207206
group_id = group.get("id")
208207
group_name = group.find("name").text
209208
if group_id is None:
210209
continue # pragma: no cover
211210

212211
self._new_groups.append(group_id)
213212
if (
214-
group_id in self._existing_groups
213+
(members := self._collect_members(group))
214+
and group_id in self._existing_groups
215215
and self.gw_entities[group_id]["name"] == group_name
216216
):
217217
continue
218218

219219
group_type = group.find("type").text
220-
group_appliances = group.findall("appliances/appliance")
221-
for item in group_appliances:
222-
self._add_member(item, members)
223-
224220
if group_type in GROUP_TYPES and members:
225221
self.gw_entities[group_id] = {
226222
"dev_class": group_type,
@@ -242,10 +238,15 @@ def _get_groups(self) -> None:
242238
self._existing_groups = self._new_groups
243239
self._new_groups = []
244240

245-
def _add_member(self, element: etree.Element, members: list[str]) -> None:
246-
"""Check and add member to list."""
247-
if (member_id := element.attrib["id"]) in self.gw_entities:
248-
members.append(member_id)
241+
def _collect_members(self, element: etree.Element) -> list[str]:
242+
"""Check and collect members."""
243+
members: list[str] = []
244+
group_appliances = element.findall("appliances/appliance")
245+
for item in group_appliances:
246+
if (member_id := item.get("id")) in self.gw_entities:
247+
members.append(member_id)
248+
249+
return members
249250

250251
def _get_lock_state(
251252
self, xml: etree.Element, data: GwEntityData, stretch_v2: bool = False

0 commit comments

Comments
 (0)