From 4b894c4fb146a01abb841c2ab90af6969061b398 Mon Sep 17 00:00:00 2001 From: Timm Fitschen <t.fitschen@indiscale.com> Date: Tue, 13 Dec 2022 17:09:35 +0100 Subject: [PATCH] WIP: file storage refactoring: directory --- src/caosdb/__init__.py | 3 ++- src/caosdb/common/models.py | 36 +++++++++++++++++++++++++++++++++--- 2 files changed, 35 insertions(+), 4 deletions(-) diff --git a/src/caosdb/__init__.py b/src/caosdb/__init__.py index 58c4aebb..78a17aef 100644 --- a/src/caosdb/__init__.py +++ b/src/caosdb/__init__.py @@ -45,7 +45,8 @@ from caosdb.common.models import (ACL, ALL, FIX, NONE, OBLIGATORY, RECOMMENDED, File, Info, Message, Permissions, Property, Query, QueryTemplate, Record, RecordType, delete, execute_query, get_global_acl, - get_known_permissions, raise_errors) + get_known_permissions, raise_errors, + Directory) from caosdb.configuration import _read_config_files, configure, get_config from caosdb.connection.connection import configure_connection, get_connection from caosdb.exceptions import * diff --git a/src/caosdb/common/models.py b/src/caosdb/common/models.py index 7809b43d..4bd5e5a5 100644 --- a/src/caosdb/common/models.py +++ b/src/caosdb/common/models.py @@ -1706,9 +1706,7 @@ class Property(Entity): class Message(object): - # @ReservedAssignment - - def __init__(self, type, code=None, description=None, body=None): # @ReservedAssignment + def __init__(self, type, code=None, description=None, body=None): self.type = type self.code = code self.description = description @@ -1819,6 +1817,37 @@ class Record(Entity): return Entity.to_xml(self, xml, add_properties=ALL) +class Directory(Record): + """This class represents CaosDB's directory entities.""" + + def __init__(self, name=None, id=None, description=None, path=None): + Record.__init__(self, id=id, name=name, description=description) + self.role = "Directory" + self.datatype = None + + # location in the fileserver + self.path = path + + def to_xml(self, xml=None, add_properties=ALL, local_serialization=False): + """Convert this Directory to an xml element. + + @return: xml element + """ + + if xml is None: + xml = etree.Element("Directory") + + return Entity.to_xml(self, xml=xml, add_properties=add_properties, + local_serialization=local_serialization) + + def add_property(self, property=None, id=None, name=None, description=None, datatype=None, + value=None, unit=None, importance=FIX, inheritance=FIX): + + return super().add_property( + property=property, id=id, name=name, description=description, datatype=datatype, + value=value, unit=unit, importance=importance, inheritance=inheritance) + + class File(Record): """This class represents CaosDB's file entities. @@ -4385,6 +4414,7 @@ def _parse_single_xml_element(elem): 'recordtype': RecordType, 'property': Property, 'file': File, + 'directory': Directory, 'parent': Parent, 'entity': Entity} -- GitLab