From 3f7dd02b0f5ef67da1beb186eacee6a624ddc6d6 Mon Sep 17 00:00:00 2001 From: Alexander Schlemmer <alexander@mail-schlemmer.de> Date: Thu, 18 Nov 2021 17:26:05 +0100 Subject: [PATCH] handling of list properties or multi properties now works correctly --- src/newcrawler/converters.py | 30 +++++++++--------------------- 1 file changed, 9 insertions(+), 21 deletions(-) diff --git a/src/newcrawler/converters.py b/src/newcrawler/converters.py index 87812280..ab3bd412 100644 --- a/src/newcrawler/converters.py +++ b/src/newcrawler/converters.py @@ -218,40 +218,28 @@ class Converter(object): # additionally add the new record to the general store: values[name] = c_record - # the following rules apply: - # - all properties will be added (as they do not exist yet) - # if +$ a new list is created and an element is added + c_record = records[name] - for key, value in record.items(): - if key == "parents": - continue - propvalue, collection_mode = handle_value(value, values) + for key, value in record.items(): + if key == "parents": + continue + propvalue, collection_mode = handle_value(value, values) + if c_record.get_property(key) is None: + if collection_mode == "list": c_record.add_property(name=key, value=[propvalue]) elif (collection_mode == "multiproperty" or collection_mode == "single"): c_record.add_property(name=key, value=propvalue) - else: - # the following rules apply: - # if +$ an element is added to the existing list - # if *$ the property is added (leading possibly to multiple properties) - # if just $ the property is set (and possibly overwritten) - c_record = records[name] - - for key, value in record.items(): - if key == "parents": - continue - - propvalue, collection_mode = handle_value(value, values) - + else: if collection_mode == "list": c_record.get_property(key).value.append(propvalue) elif collection_mode == "multiproperty": c_record.add_property(name=key, value=propvalue) elif collection_mode == "single": c_record.get_property(key).value = propvalue - + # no matter whether the record existed in the record store or not, -- GitLab