From 1055adb27c97477e908a857180539734063c23e3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Laura=20Kl=C3=BCnder?= Date: Mon, 26 Aug 2024 20:30:09 +0200 Subject: [PATCH] pre_change_values could be None if created, don't use it then --- src/c3nav/editor/overlay.py | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/src/c3nav/editor/overlay.py b/src/c3nav/editor/overlay.py index eeab3277..8b4a9a56 100644 --- a/src/c3nav/editor/overlay.py +++ b/src/c3nav/editor/overlay.py @@ -93,19 +93,20 @@ class DatabaseOverlayManager: if update_fields: field_values = {name: value for name, value in field_values.items() if name in update_fields} - field_values = {name: value for name, value in field_values.items() if value != pre_change_values[name]} + if pre_change_values is not None: + field_values = {name: value for name, value in field_values.items() if value != pre_change_values[name]} - # special diffing within the i18n fields - for field_name in tuple(field_values): - if isinstance(instance._meta.get_field(field_name), I18nField): - before_val = pre_change_values[field_name] - after_val = field_values[field_name] + # special diffing within the i18n fields + for field_name in tuple(field_values): + if isinstance(instance._meta.get_field(field_name), I18nField): + before_val = pre_change_values[field_name] + after_val = field_values[field_name] - diff_val = {} - for lang in (set(before_val) | set(after_val)): - if before_val.get(lang, None) != after_val.get(lang, None): - diff_val[lang] = after_val.get(lang, None) - field_values[field_name] = diff_val + diff_val = {} + for lang in (set(before_val) | set(after_val)): + if before_val.get(lang, None) != after_val.get(lang, None): + diff_val[lang] = after_val.get(lang, None) + field_values[field_name] = diff_val self.new_operations.append(UpdateObjectOperation(obj=ref, fields=field_values))