From d06ed34d3b8a0dcbd09af3dfca1aedfba651f6bb Mon Sep 17 00:00:00 2001
From: vermeul <swen@ethz.ch>
Date: Thu, 22 Jun 2017 11:05:34 +0200
Subject: [PATCH] bugfix withChildren using permIds

---
 src/python/PyBis/pybis/pybis.py | 41 +++++++++++++++++++--------------
 1 file changed, 24 insertions(+), 17 deletions(-)

diff --git a/src/python/PyBis/pybis/pybis.py b/src/python/PyBis/pybis/pybis.py
index 8750b2c2d9b..1fb4b213e12 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()
-- 
GitLab