[storage] relies on event=='deleted' to detect "delete" event (closes #2450680) oldstable
authorPierre-Yves David <pierre-yves.david@logilab.fr>
Tue, 31 Jul 2012 17:25:28 +0200
brancholdstable
changeset 8501 b922dd08eb79
parent 8462 a14b6562082b
child 8502 c6ab3b335a22
[storage] relies on event=='deleted' to detect "delete" event (closes #2450680) When we delete a previously edited entity, it *will* have a cw_edited attribute even if the goal is to delete it. The function get an argument that explicitly contains the "delete" event. The code now uses that instead.
server/sources/native.py
--- a/server/sources/native.py	Tue Jul 10 15:07:23 2012 +0200
+++ b/server/sources/native.py	Tue Jul 31 17:25:28 2012 +0200
@@ -614,12 +614,10 @@
         etype = entities[0].__regid__
         for attr, storage in self._storages.get(etype, {}).items():
             for entity in entities:
-                try:
+                if event == 'deleted':
+                    storage.entity_deleted(entity, attr)
+                else:
                     edited = entity.cw_edited
-                except AttributeError:
-                    assert event == 'deleted'
-                    getattr(storage, 'entity_deleted')(entity, attr)
-                else:
                     if attr in edited:
                         handler = getattr(storage, 'entity_%s' % event)
                         to_restore = handler(entity, attr)