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