diff --git a/src/python/PyBis/pybis/pybis.py b/src/python/PyBis/pybis/pybis.py index 8750b2c2d9bbd78cb2e9d694cc2bee22d3f13c31..1fb4b213e12184c94d71b73d207d0d42e37fc169 100644 --- a/src/python/PyBis/pybis/pybis.py +++ b/src/python/PyBis/pybis/pybis.py @@ -431,26 +431,33 @@ def _gen_search_criteria(req): sreq["criteria"] = [_common_search( "as.dto.common.search.CodeSearchCriteria", val.upper() )] - elif key == "permid": - sreq["criteria"] = [_common_search( - "as.dto.common.search.PermIdSearchCriteria", val - )] elif key == "identifier": - si = split_identifier(val) - sreq["criteria"] = [] - if "space" in si: - sreq["criteria"].append( - _gen_search_criteria({"space": "Space", "code": si["space"]}) - ) - if "experiment" in si: - pass + if is_identifier(val): + # if we have an identifier, we need to search in Space and Code separately + si = split_identifier(val) + sreq["criteria"] = [] + if "space" in si: + sreq["criteria"].append( + _gen_search_criteria({"space": "Space", "code": si["space"]}) + ) + if "experiment" in si: + pass - if "code" in si: - sreq["criteria"].append( - _common_search( - "as.dto.common.search.CodeSearchCriteria", si["code"].upper() + if "code" in si: + sreq["criteria"].append( + _common_search( + "as.dto.common.search.CodeSearchCriteria", si["code"].upper() + ) ) - ) + elif is_permid(val): + sreq["criteria"] = [_common_search( + "as.dto.common.search.PermIdSearchCriteria", val + )] + else: + # we assume we just got a code + sreq["criteria"] = [_common_search( + "as.dto.common.search.CodeSearchCriteria", val.upper() + )] elif key == "operator": sreq["operator"] = val.upper()