From 69d93ddf384e68aa9065f3f8ab9e5b89f7fed97d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Laura=20Kl=C3=BCnder?= Date: Thu, 5 Dec 2024 14:14:58 +0100 Subject: [PATCH] =?UTF-8?q?if=20restoring=20a=20deleted=20object=20?= =?UTF-8?q?=E2=80=A6=20potentially=20remove=20from=20changeset?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/c3nav/editor/changes.py | 7 +++++++ src/c3nav/editor/views/changes.py | 2 ++ 2 files changed, 9 insertions(+) diff --git a/src/c3nav/editor/changes.py b/src/c3nav/editor/changes.py index e1564d60..7a14c89f 100644 --- a/src/c3nav/editor/changes.py +++ b/src/c3nav/editor/changes.py @@ -26,6 +26,10 @@ class ChangedManyToMany(BaseSchema): added: list[ObjectID] = [] removed: list[ObjectID] = [] + @property + def __bool__(self): + return not (self.cleared or self.added or self.removed) + class ChangedObject(BaseSchema): obj: ObjectReference @@ -35,6 +39,9 @@ class ChangedObject(BaseSchema): fields: FieldValuesDict = {} m2m_changes: dict[FieldName, ChangedManyToMany] = {} + def __bool__(self): + return self.created or self.deleted or self.fields or any(self.m2m_changes.values()) + class OperationDependencyObjectExists(BaseSchema): model_config = ConfigDict(frozen=True) diff --git a/src/c3nav/editor/views/changes.py b/src/c3nav/editor/views/changes.py index 674732fb..b6541755 100644 --- a/src/c3nav/editor/views/changes.py +++ b/src/c3nav/editor/views/changes.py @@ -48,6 +48,8 @@ def changeset_detail(request, pk): messages.error(request, _("Can't restore this object because it wasn't deleted")) else: changed_object.deleted = False + if not changed_object: + changeset.changes.objects[changed_object.obj.model].pop(changed_object.obj.id) update = changeset.updates.create(user=request.user, objects_changed=True) changeset.last_update = update changeset.last_change = update