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