From fee161e54f9120e3c9c2ae35d425c4f3a58fd60d Mon Sep 17 00:00:00 2001
From: fspreck <f.spreckelsen@indiscale.com>
Date: Fri, 11 Mar 2022 18:19:12 +0100
Subject: [PATCH] FIX: Correct parsing of dicts in properties

---
 src/caosadvancedtools/models/parser.py | 33 ++++++++++++++++++--------
 1 file changed, 23 insertions(+), 10 deletions(-)

diff --git a/src/caosadvancedtools/models/parser.py b/src/caosadvancedtools/models/parser.py
index f385a1a3..a6d37045 100644
--- a/src/caosadvancedtools/models/parser.py
+++ b/src/caosadvancedtools/models/parser.py
@@ -320,15 +320,27 @@ class Parser(object):
                 continue
             n = self._stringify(n)
 
-            if (isinstance(e, dict) and "datatype" in e
-                    and (_get_listdatatype(e["datatype"]) is not None)):
-                self.model[ent_name].add_property(
-                    name=n,
-                    importance=importance,
-                    datatype=db.LIST(_get_listdatatype(e["datatype"])))
-            elif e is None:
-                self.model[ent_name].add_property(name=n,
-                                                  importance=importance)
+            if isinstance(e, dict):
+                if "datatype" in e:
+                    if _get_listdatatype(e["datatype"]) is not None:
+                        self.model[ent_name].add_property(
+                            name=n,
+                            importance=importance,
+                            datatype=db.LIST(_get_listdatatype(e["datatype"])))
+                    else:
+                        self.model[ent_name].add_property(
+                            name=n,
+                            importance=importance,
+                            datatype=e["datatype"]
+                        )
+                else:
+                    self.model[ent_name].add_property(
+                        name=n,
+                        importance=importance
+                    )
+                if "value" in e:
+                    self.model[ent_name].get_property(n).value = e["value"]
+
             else:
                 self.model[ent_name].add_property(name=n,
                                                   value=e,
@@ -470,7 +482,8 @@ class Parser(object):
 
                     continue
 
-                raise ValueError("Property {} has an unknown datatype: {}".format(value.name, value.datatype))
+                raise ValueError("Property {} has an unknown datatype: {}".format(
+                    value.name, value.datatype))
 
     def _set_recordtypes(self):
         """ properties are defined in first iteration; set remaining as RTs """
-- 
GitLab