From e71772594c85fb4c5b6e34a5d94c3d5b5630e060 Mon Sep 17 00:00:00 2001 From: David Wallace Date: Mon, 8 Jul 2024 09:53:19 +0200 Subject: [PATCH] refactor(import): update created and updated, return False when error at save Signed-off-by: David Wallace --- rdmo/management/import_utils.py | 1 - rdmo/management/imports.py | 14 +++++++++----- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/rdmo/management/import_utils.py b/rdmo/management/import_utils.py index bb792361af..92ec4cfa5e 100644 --- a/rdmo/management/import_utils.py +++ b/rdmo/management/import_utils.py @@ -37,7 +37,6 @@ def strip_uri_prefix_endswith_slash(element: dict) -> dict: def apply_field_values(instance, element, import_helper, uploaded_uris, original) -> None: """Applies the field values from the element to the instance.""" - element = strip_uri_prefix_endswith_slash(element) # start to set values on the instance # set common field values from element on instance for field in import_helper.common_fields: diff --git a/rdmo/management/imports.py b/rdmo/management/imports.py index c0305cc57b..10679d100a 100644 --- a/rdmo/management/imports.py +++ b/rdmo/management/imports.py @@ -112,9 +112,8 @@ def import_element( element["errors"].append(perms_error_msg) return element - updated = not created element['created'] = created - element['updated'] = updated + element['updated'] = not created and original is not None # INFO: the dict element[FieldNames.diff.value] is filled by calling track_changes_on_element element = strip_uri_prefix_endswith_slash(element) @@ -126,16 +125,21 @@ def import_element( if element.get('errors'): # when there is an error msg, the import can be stopped and return + if save: + element['created'] = False + element['updated'] = False return element if save: logger.info(msg) instance.save() - if save or updated: update_related_fields(instance, element, import_helper, original, save) - if save and settings.MULTISITE: - add_current_site_to_sites_and_editor(instance, current_site, import_helper) + if created and settings.MULTISITE: + add_current_site_to_sites_and_editor(instance, current_site, import_helper) + + elif not created: # when an element will be updated but not saved + update_related_fields(instance, element, import_helper, original, save) return element