diff --git a/mxcubecore/BaseHardwareObjects.py b/mxcubecore/BaseHardwareObjects.py index 654f6c32d2..4591f1bce3 100644 --- a/mxcubecore/BaseHardwareObjects.py +++ b/mxcubecore/BaseHardwareObjects.py @@ -473,18 +473,15 @@ def get_object_by_role(self, role: str) -> Union["HardwareObject", None]: Union[HardwareObject, None]: Hardware object. """ role = str(role).lower() - objects = [o for o in self if o] + objects = [self] - while objects: - if role in self._objects_by_role: - return self._objects_by_role[role] + for curr in objects: + result = curr._objects_by_role.get(role) + if result is None: + objects.extend(obj for obj in curr if obj) - try : - self = objects.pop() - - except : - if self.get_object_by_role(role): - return self.get_object_by_role(role) + else : + return result def objects_names(self) -> List[Union[str, None]]: