From 2cf581f743195eba07d16f1e4b213c76e3442a7a Mon Sep 17 00:00:00 2001
From: Alexander Schlemmer <alexander@mail-schlemmer.de>
Date: Mon, 27 Jun 2022 12:03:50 +0200
Subject: [PATCH] ENH: added correct formatting of sub properties in
 identifiables cache

---
 src/caoscrawler/identified_cache.py | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/src/caoscrawler/identified_cache.py b/src/caoscrawler/identified_cache.py
index 0b9d7a47..19c458af 100644
--- a/src/caoscrawler/identified_cache.py
+++ b/src/caoscrawler/identified_cache.py
@@ -47,7 +47,6 @@ def _create_hashable_string(identifiable: db.Record):
         raise RuntimeError("Cache entry can only be generated for entities with 1 parent.")
     rec_string = "P<{}>N<{}>".format(identifiable.parents[0].name, identifiable.name)
     for pname in sorted([p.name for p in identifiable.properties]):
-        value = str(identifiable.get_property(pname).value)
 
         # TODO: (for review)
         #       This expansion of the hash function was introduced recently
@@ -57,7 +56,10 @@ def _create_hashable_string(identifiable: db.Record):
         if isinstance(identifiable.get_property(pname).value, db.File):
             value = str(identifiable.get_property(pname).value.path)
         elif isinstance(identifiable.get_property(pname).value, db.Entity):
-            value = str(identifiable.get_property(pname).value.id)
+            if identifiable.get_property(pname).value.id is not None:
+                value = str(identifiable.get_property(pname).value.id)
+            else:
+                value = hex(id(identifiable.get_property(pname).value))
         elif isinstance(identifiable.get_property(pname).value, list):
             tmplist = []
             for val in identifiable.get_property(pname).value:
@@ -66,6 +68,8 @@ def _create_hashable_string(identifiable: db.Record):
                 else:
                     tmplist.append(val)
             value = str(tmplist)
+        else:
+            value = str(identifiable.get_property(pname).value)
 
         rec_string += "{}:".format(pname) + value
     return rec_string
-- 
GitLab