From 9fd8dcb8b992eb768cffb5e6989917cd8ad58f34 Mon Sep 17 00:00:00 2001
From: Alexander Schlemmer <alexander@mail-schlemmer.de>
Date: Tue, 7 Feb 2023 14:30:16 +0100
Subject: [PATCH] ENH: conversion of CaosDB objects to a more readable yaml
 serialization

---
 src/caoscrawler/scanner.py   |  7 ++++++-
 unittests/debug_tree_test.py | 19 ++++++++++++++++---
 2 files changed, 22 insertions(+), 4 deletions(-)

diff --git a/src/caoscrawler/scanner.py b/src/caoscrawler/scanner.py
index bc2924dc..cdf2b621 100644
--- a/src/caoscrawler/scanner.py
+++ b/src/caoscrawler/scanner.py
@@ -61,6 +61,8 @@ from .stores import Store, GeneralStore, RecordStore
 from .structure_elements import StructureElement, Directory, NoneElement
 from .version import check_cfood_version
 
+from caosdb.high_level_api import convert_to_python_object
+
 from .debug.debug_tree import (DebugTreeStructureElement,
                                     DebugTreeConverter,
                                     DebugTreeVariable)
@@ -437,9 +439,12 @@ def store_to_tree(store: Store):
     res: list[DebugTreeVariable] = list()
     copied = store.get_dict_copied()
     for name, value in store.get_storage().items():
+        converted_value = value
+        if isinstance(value, db.Entity):
+            converted_value = convert_to_python_object(value).serialize(True)
         res.append(
             DebugTreeVariable(
-                name, value,
+                name, converted_value,
                 copied[name],
                 store.get_internal_id(name)))
     return res
diff --git a/unittests/debug_tree_test.py b/unittests/debug_tree_test.py
index 5b7bb9dc..6a2676d2 100644
--- a/unittests/debug_tree_test.py
+++ b/unittests/debug_tree_test.py
@@ -48,7 +48,14 @@ from caosdb.apiutils import compare_entities
 import pytest
 from pytest import raises
 
-from caoscrawler.scanner import scanner
+from caoscrawler.scanner import scanner, scan_directory
+
+def rfp(*pathcomponents):
+    """
+    Return full path.
+    Shorthand convenience function.
+    """
+    return join(dirname(__file__), *pathcomponents)
 
 
 def test_scanner():
@@ -59,7 +66,13 @@ def test_scanner():
 
     crawled_data, debug_tree = scanner([d], [c])
     print(yaml.dump(debug_tree))
-    assert False
+    # assert False
 
 def test_scanner_directories():
-    d = Directory("2023-02-07_ProjectName", "/")
+    crawled_data, debug_tree = scan_directory(
+        rfp("test_directories", "examples_article"), rfp("scifolder_cfood.yml"))
+
+    print(crawled_data)
+    print(yaml.dump(debug_tree))
+
+    assert False
-- 
GitLab