Skip to content
Snippets Groups Projects

F integration test baltasar

Closed Alexander Schlemmer requested to merge f-integration-test-baltasar into dev
2 files
+ 61
5
Compare changes
  • Side-by-side
  • Inline
Files
2
@@ -39,6 +39,8 @@ from typing import Optional, Union
from abc import abstractmethod
import yaml_header_tools
from caosdb.high_level_api import (CaosDBPythonEntity,
create_entity_container)
import yaml
# These are special properties which are (currently) treated differently
@@ -329,10 +331,61 @@ class SimpleFileConverter(Converter):
return None
return m.groupdict()
class YamlFileCaosDBRecord(Converter):
"""
Load a file using pylib high level API and convert the contained
record into caosdb records.
"""
def typecheck(self, element: StructureElement):
return isinstance(element, File)
def create_children(self, generalStore: GeneralStore,
element: StructureElement):
return list()
def match(self, element: StructureElement):
if not isinstance(element, File):
raise RuntimeError("Element must be a file.")
m = re.match(self.definition["match"], element.name)
if m is None:
return None
return m.groupdict()
def create_records(self, values: GeneralStore,
records: RecordStore,
element: StructureElement):
if not isinstance(element, File):
raise RuntimeError("A yaml file is needed to create children.")
keys_modified = []
with open(element.path, "r") as f:
entries = yaml.safe_load(f)
entity = CaosDBPythonEntity.deserialize(entries)
entities = create_entity_container(entity)
for n, ent in enumerate(entities):
name = ent.name
if name is None:
name = "YamlRecord_{}".format(n + 1)
records[name] = ent
values[name] = ent
for propname in ent.properties:
keys_modified.append((name, propname.name))
# Process the records section of the yaml definition:
keys_modified.extend(
super().create_records(values, records, element))
return keys_modified
class MarkdownFileConverter(Converter):
def __init__(self, definition: dict, name: str,
converter_registry: dict):
converter_registry: dict):
"""
Initialize a new directory converter.
"""
Loading