From 0925da46cb6b241f8b81ca53c8dfaf4ff4166325 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Henrik=20tom=20W=C3=B6rden?= <h.tomwoerden@indiscale.com>
Date: Wed, 19 Aug 2020 15:29:21 +0000
Subject: [PATCH] FIX: query was inaccurate

---
 src/caosadvancedtools/cfood.py | 15 +++++++++------
 unittests/test_utils.py        |  5 ++++-
 2 files changed, 13 insertions(+), 7 deletions(-)

diff --git a/src/caosadvancedtools/cfood.py b/src/caosadvancedtools/cfood.py
index 8d387bea..1bb842de 100644
--- a/src/caosadvancedtools/cfood.py
+++ b/src/caosadvancedtools/cfood.py
@@ -43,7 +43,7 @@ import warnings
 from abc import ABCMeta, abstractmethod
 
 import caosdb as db
-from caosdb.exceptions import EntityDoesNotExistError
+from caosdb.exceptions import AmbiguityException, EntityDoesNotExistError
 
 from .datamodel_problems import DataModelProblems
 from .guard import global_guard as guard
@@ -83,9 +83,10 @@ def get_property(name):
 
     if name not in PROPERTIES:
         try:
-            prop = db.execute_query("FIND Property "+name,
+            prop = db.execute_query("FIND Property with name='{}'".format(
+                name),
                                     unique=True)
-        except EntityDoesNotExistError as e:
+        except (EntityDoesNotExistError, AmbiguityException):
             # Property might actually be a RecordTypes
             prop = get_recordtype(name)
         PROPERTIES[name] = prop
@@ -102,7 +103,8 @@ def get_record(name):
     """
 
     if name not in RECORDS:
-        rec = db.execute_query("FIND Record "+name, unique=True)
+        rec = db.execute_query("FIND Record with name='{}'".format(name),
+                               unique=True)
         RECORDS[name] = rec
 
     return RECORDS[name]
@@ -120,8 +122,9 @@ def get_recordtype(name):
 
     if name not in RECORDTYPES:
         try:
-            rec = db.execute_query("FIND RecordType "+name, unique=True)
-        except EntityDoesNotExistError as e:
+            rec = db.execute_query("FIND RecordType WITH name='{}'".format(name),
+                                   unique=True)
+        except (EntityDoesNotExistError, AmbiguityException) as e:
             DataModelProblems.add(name)
             raise e
         RECORDTYPES[name] = rec
diff --git a/unittests/test_utils.py b/unittests/test_utils.py
index b259ad4a..054d7c99 100644
--- a/unittests/test_utils.py
+++ b/unittests/test_utils.py
@@ -76,7 +76,10 @@ class ReferencesBaseTest(unittest.TestCase):
                                      location=None)
         self.assertEqual(len(files), 1)
         self.assertEqual(files[0].path, "/some/path/test.npy")
-        self.assertEqual(self.get_log(), "")
+        log = self.get_log()
+        assert "FIND file which" in log
+        assert "does not allow a search" not in log
+        assert "does not reference any " not in log
 
 
 class ReferencesFailTest(ReferencesBaseTest):
-- 
GitLab