server/sources/native.py
branchstable
changeset 5217 08e7fa906cdb
parent 5214 3285b6e3b930
child 5323 329b4f6d18b4
child 5410 3cccd5e9dd7d
equal deleted inserted replaced
5215:b1327f19d23e 5217:08e7fa906cdb
   473         #    value once the SQL query will be executed
   473         #    value once the SQL query will be executed
   474         restore_values = {}
   474         restore_values = {}
   475         etype = entity.__regid__
   475         etype = entity.__regid__
   476         for attr, storage in self._storages.get(etype, {}).items():
   476         for attr, storage in self._storages.get(etype, {}).items():
   477             try:
   477             try:
   478                 if attr in entity.edited_attributes:
   478                 edited = entity.edited_attributes
       
   479             except AttributeError:
       
   480                 assert event == 'deleted'
       
   481                 getattr(storage, 'entity_deleted')(entity, attr)
       
   482             else:
       
   483                 if attr in edited:
   479                     handler = getattr(storage, 'entity_%s' % event)
   484                     handler = getattr(storage, 'entity_%s' % event)
   480                     real_value = handler(entity, attr)
   485                     real_value = handler(entity, attr)
   481                     restore_values[attr] = real_value
   486                     restore_values[attr] = real_value
   482             except AttributeError:
       
   483                 assert event == 'deleted'
       
   484                 getattr(storage, 'entity_deleted')(entity, attr)
       
   485         try:
   487         try:
   486             yield # 2/ execute the source's instructions
   488             yield # 2/ execute the source's instructions
   487         finally:
   489         finally:
   488             # 3/ restore original values
   490             # 3/ restore original values
   489             for attr, value in restore_values.items():
   491             for attr, value in restore_values.items():