Skip to content
Snippets Groups Projects
Commit 1a2ae15e authored by Alexander Schlemmer's avatar Alexander Schlemmer
Browse files

MAINT: added module namespace for caosdb to avoid confusion of base classes

parent 36970eaa
No related branches found
No related tags found
2 merge requests!57RELEASE 0.7.3,!52F refactor high level api
Pipeline #19461 failed
......@@ -30,16 +30,13 @@ A high level API for accessing CaosDB entities from within python.
This is refactored from apiutils.
"""
import sys
from caosdb.common.datatype import (BOOLEAN, DATETIME, DOUBLE, FILE, INTEGER,
REFERENCE, TEXT, is_reference)
from caosdb.common.models import (Container, Entity, File, Property, Query,
Record, RecordType, execute_query,
get_config)
REFERENCE, TEXT)
import caosdb as db
from .apiutils import get_type_of_entity_with
class CaosDBPythonEntity(object):
_last_id = 0
......@@ -70,7 +67,7 @@ class CaosDBPythonEntity(object):
return CaosDBPythonEntity._last_id
def _set_property_from_entity(self, ent):
def _set_property_from_entity(self, ent: db.Entity):
name = ent.name
val = ent.value
pr = ent.datatype
......@@ -84,7 +81,7 @@ class CaosDBPythonEntity(object):
"""
self._datatypes[name] = datatype
if isinstance(name, Entity):
if isinstance(name, db.Entity):
name = name.name
if name in self._forbidden:
......@@ -166,7 +163,7 @@ class CaosDBPythonEntity(object):
return (val, False)
elif pr[0:4] == "LIST":
return self._type_converted_list(val, pr)
elif isinstance(val, Entity):
elif isinstance(val, db.Entity):
return (convert_to_python_object(val), False)
else:
return (int(val), True)
......@@ -270,6 +267,7 @@ class CaosDBPythonRecordType(CaosDBPythonEntity):
class CaosDBPythonProperty(CaosDBPythonEntity):
pass
class CaosDBPythonParent(object):
"""
Parents can be either given by name or by ID.
......@@ -281,14 +279,16 @@ class CaosDBPythonParent(object):
self.id = id
self.name = name
class CaosDBPythonUnresolvedReference(object):
def __init__(self, id=None):
self.id = id
class CaosDBPythonFile(CaosDBPythonEntity):
def get_File(self, target=None):
f = File(id=self._id).retrieve()
f = db.File(id=self._id).retrieve()
self._file = f.download(target)
......@@ -398,20 +398,20 @@ def _single_convert_to_entity(entity, robj, recursive_depth, **kwargs):
def convert_to_entity(python_object, **kwargs):
if isinstance(python_object, Container):
if isinstance(python_object, db.Container):
# Create a list of objects:
return [convert_to_python_object(i, **kwargs) for i in python_object]
elif isinstance(python_object, CaosDBPythonRecord):
return _single_convert_to_entity(Record(), python_object, **kwargs)
return _single_convert_to_entity(db.Record(), python_object, **kwargs)
elif isinstance(python_object, CaosDBPythonFile):
return _single_convert_to_entity(File(), python_object, **kwargs)
return _single_convert_to_entity(db.File(), python_object, **kwargs)
elif isinstance(python_object, CaosDBPythonRecordType):
return _single_convert_to_entity(RecordType(), python_object, **kwargs)
return _single_convert_to_entity(db.RecordType(), python_object, **kwargs)
elif isinstance(python_object, CaosDBPythonProperty):
return _single_convert_to_entity(Property(), python_object, **kwargs)
return _single_convert_to_entity(db.Property(), python_object, **kwargs)
elif isinstance(python_object, CaosDBPythonEntity):
return _single_convert_to_entity(Entity(), python_object, **kwargs)
return _single_convert_to_entity(db.Entity(), python_object, **kwargs)
else:
raise ValueError("Cannot convert an object of this type.")
......@@ -419,20 +419,20 @@ def convert_to_entity(python_object, **kwargs):
def convert_to_python_object(entity):
""""""
if isinstance(entity, Container):
if isinstance(entity, db.Container):
# Create a list of objects:
return [convert_to_python_object(i) for i in entity]
elif isinstance(entity, Record):
elif isinstance(entity, db.Record):
return _single_convert_to_python_object(CaosDBPythonRecord(), entity)
elif isinstance(entity, RecordType):
elif isinstance(entity, db.RecordType):
return _single_convert_to_python_object(
CaosDBPythonRecordType(), entity)
elif isinstance(entity, File):
elif isinstance(entity, db.File):
return _single_convert_to_python_object(CaosDBPythonFile(), entity)
elif isinstance(entity, Property):
elif isinstance(entity, db.Property):
return _single_convert_to_python_object(CaosDBPythonProperty(), entity)
elif isinstance(entity, Entity):
elif isinstance(entity, db.Entity):
return _single_convert_to_python_object(CaosDBPythonEntity(), entity)
else:
raise ValueError("Cannot convert an object of this type.")
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment