426 # transparent, we'll have to reset entity.data to its binary |
426 # transparent, we'll have to reset entity.data to its binary |
427 # value once the SQL query will be executed |
427 # value once the SQL query will be executed |
428 orig_values = {} |
428 orig_values = {} |
429 etype = entity.__regid__ |
429 etype = entity.__regid__ |
430 for attr, storage in self._storages.get(etype, {}).items(): |
430 for attr, storage in self._storages.get(etype, {}).items(): |
431 if attr in entity.edited_attributes: |
431 try: |
432 orig_values[attr] = entity[attr] |
432 if attr in entity.edited_attributes: |
433 handler = getattr(storage, 'entity_%s' % event) |
433 orig_values[attr] = entity[attr] |
434 handler(entity, attr) |
434 handler = getattr(storage, 'entity_%s' % event) |
|
435 handler(entity, attr) |
|
436 except AttributeError: |
|
437 assert event == 'deleted' |
|
438 getattr(storage, 'entity_deleted')(entity, attr) |
435 yield # 2/ execute the source's instructions |
439 yield # 2/ execute the source's instructions |
436 # 3/ restore original values |
440 # 3/ restore original values |
437 for attr, value in orig_values.items(): |
441 for attr, value in orig_values.items(): |
438 entity[attr] = value |
442 entity[attr] = value |
439 |
443 |