diff --git a/src/caosdb/common/models.py b/src/caosdb/common/models.py index ca13c23e80bb7e147d8adf1b80790bbc328e6634..37f622104dffc2cfb523c9fa9f1eba76f06f4cff 100644 --- a/src/caosdb/common/models.py +++ b/src/caosdb/common/models.py @@ -552,24 +552,33 @@ class Entity(object): The first Property of this Entity with a matching name or id. """ - result = None - if hasattr(pattern, "name"): - result = self.get_property(pattern.name) - if result is None and hasattr(pattern, "id"): - result = self.get_property(pattern.id) - if result is not None: - return result - - if isinstance(pattern, int): + # entity given + + if (hasattr(pattern, "name") or hasattr(pattern, "id")): + # only return if a result was found, otherwise use id + + if (hasattr(pattern, "name") and pattern.name is not None + and self.get_property(pattern.name) is not None): + + return self.get_property(pattern.name) + + if hasattr(pattern, "id")and pattern.id is not None: + return self.get_property(pattern.id) + + # int given + elif isinstance(pattern, int): for p in self.properties: if p.id is not None and int(p.id) == int(pattern): return p - else: + # str given + elif isinstance(pattern, str): for p in self.properties: if (p.name is not None and str(p.name).lower() == str(pattern).lower()): return p + else: + raise ValueError("argument should be entity, int , string") return None