From e41160a5b9179edad476899be24f5a3ac64f47f8 Mon Sep 17 00:00:00 2001
From: fspreck <f.spreckelsen@indiscale.com>
Date: Wed, 16 Mar 2022 10:07:55 +0100
Subject: [PATCH] MAINT: Refactor and simplify adding of properties

---
 src/caosadvancedtools/models/parser.py | 36 ++++++++++++--------------
 1 file changed, 16 insertions(+), 20 deletions(-)

diff --git a/src/caosadvancedtools/models/parser.py b/src/caosadvancedtools/models/parser.py
index 22632191..fe52616d 100644
--- a/src/caosadvancedtools/models/parser.py
+++ b/src/caosadvancedtools/models/parser.py
@@ -325,30 +325,26 @@ class Parser(object):
             n = self._stringify(n)
 
             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"]
-                        )
+                if "datatype" in e and _get_listdatatype(e["datatype"]) is not None:
+                    datatype = db.LIST(_get_listdatatype(e["datatype"]))
                 else:
-                    self.model[ent_name].add_property(
-                        name=n,
-                        importance=importance
-                    )
+                    # ignore a possible e["datatype"] here if it's not a list
+                    # since it has been treated in the definition of the
+                    # property (entity) already
+                    datatype = None
                 if "value" in e:
-                    self.model[ent_name].get_property(n).value = e["value"]
+                    value = e["value"]
+                else:
+                    value = None
 
             else:
-                self.model[ent_name].add_property(name=n,
-                                                  value=e,
-                                                  importance=importance)
+                value = e
+                datatype = None
+
+            self.model[ent_name].add_property(name=n,
+                                              value=value,
+                                              importance=importance,
+                                              datatype=datatype)
 
     def _inherit(self, name, prop, inheritance):
         if not isinstance(prop, list):
-- 
GitLab