From 4b7c68e7fb7521b61bb92f05541c8c5abd80b788 Mon Sep 17 00:00:00 2001 From: florian <f.spreckelsen@inidscale.com> Date: Tue, 7 Jul 2020 13:28:50 +0200 Subject: [PATCH] BUG: Fix --- src/caosdb/common/models.py | 36 ++++++++++++++++++++---------------- 1 file changed, 20 insertions(+), 16 deletions(-) diff --git a/src/caosdb/common/models.py b/src/caosdb/common/models.py index 31a44200..122fa1db 100644 --- a/src/caosdb/common/models.py +++ b/src/caosdb/common/models.py @@ -46,13 +46,16 @@ from caosdb.common.utils import uuid, xml2str from caosdb.configuration import get_config from caosdb.connection.connection import get_connection from caosdb.connection.encode import MultipartParam, multipart_encode -from caosdb.exceptions import (AmbiguityException, AuthorizationException, +from caosdb.exceptions import (AmbiguityException, + AuthorizationException, CaosDBException, ConnectionException, - ConsistencyError, + ConsistencyError, ContainerError, EntityDoesNotExistError, EntityError, - EntityHasNoDatatypeError, TransactionError, - UniqueNamesError, UnqualifiedParentsError, - UnqualifiedPropertiesError, URITooLongException) + EntityHasNoDatatypeError, + TransactionError, UniqueNamesError, + UnqualifiedParentsError, + UnqualifiedPropertiesError, + URITooLongException) from lxml import etree from .datatype import is_reference @@ -3700,7 +3703,7 @@ def _evaluate_and_add_error(parent_error, ent): if err.code is not None: if int(err.code) == 101: # ent doesn't exist new_exc = EntityDoesNotExistError(entity=ent, - error=err)) + error=err) elif int(err.code) == 110: # ent has no data type new_exc=EntityHasNoDatatypeError(entity = ent, error = err) @@ -3727,7 +3730,7 @@ def _evaluate_and_add_error(parent_error, ent): new_exc = EntityError(entity=ent, error=err) else: # No error code causes a general EntityError, too new_exc = EntityError(entity=ent, error=err) - parent_err.add_error(new_exc) + parent_error.add_error(new_exc) # Check for possible errors in parents and properties that # weren't detected up to here if not found114: @@ -3735,28 +3738,29 @@ def _evaluate_and_add_error(parent_error, ent): for prop in ent.get_properties(): dummy_err = _evaluate_and_add_error(dummy_err, prop) if dummy_err.get_errors(): - parent_err.add_error(dummy_err) + parent_error.add_error(dummy_err) if not found116: dummy_err = EntityError(entity=ent) for par in ent.get_parents(): dummy_err = _evaluate_and_add_error(dummy_err, par) if dummy_err.get_errors(): - parent_err.add_error(dummy_err) + parent_error.add_error(dummy_err) elif isinstance(ent, Container): - for err in ent.get_errors(): - cont_err = ContainerError(entity=ent, error=err) - for elt in ent: - cont_err = _evaluate_and_add_error(cont_err, elt) - parent_err.add_error(cont_err) + if ent.get_errors() is not None: + for err in ent.get_errors(): + cont_err = ContainerError(entity=ent, error=err) + for elt in ent: + cont_err = _evaluate_and_add_error(cont_err, elt) + parent_error.add_error(cont_err) # Cover possibility that the container doesn't have an error # but still contains entities that do - if not ent.get_errors(): + else: dummy_err = ContainerError(entity=ent) for elt in ent: dummy_err = _evaluate_and_add_error(dummy_err, elt) if dummy_err.get_errors(): - parent_err.add_error(dummy_err) + parent_error.add_error(dummy_err) else: raise TypeError("Parameter ent is to be an Entity or a Container") -- GitLab