480 handler = getattr(storage, 'entity_%s' % event) |
480 handler = getattr(storage, 'entity_%s' % event) |
481 handler(entity, attr) |
481 handler(entity, attr) |
482 except AttributeError: |
482 except AttributeError: |
483 assert event == 'deleted' |
483 assert event == 'deleted' |
484 getattr(storage, 'entity_deleted')(entity, attr) |
484 getattr(storage, 'entity_deleted')(entity, attr) |
485 yield # 2/ execute the source's instructions |
485 try: |
486 # 3/ restore original values |
486 yield # 2/ execute the source's instructions |
487 for attr, value in orig_values.items(): |
487 finally: |
488 entity[attr] = value |
488 # 3/ restore original values |
|
489 for attr, value in orig_values.items(): |
|
490 entity[attr] = value |
489 |
491 |
490 def add_entity(self, session, entity): |
492 def add_entity(self, session, entity): |
491 """add a new entity to the source""" |
493 """add a new entity to the source""" |
492 with self._storage_handler(entity, 'added'): |
494 with self._storage_handler(entity, 'added'): |
493 attrs = self.preprocess_entity(entity) |
495 attrs = self.preprocess_entity(entity) |