server/sources/native.py
branchstable
changeset 5011 57c4c6399b44
parent 4964 d9e8af8a7a42
child 5013 ad91f93bbb93
equal deleted inserted replaced
5010:b2c5aee8ca3f 5011:57c4c6399b44
   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