When the apply
method of the item is called
on the client or the
server, the server application, by default,
generates SQL query, based on changes made to the dataset and executes it.
This behavior can be changed by writing an on_apply event handler in the item server module.
Sometimes it becomes necessary to execute some code, when changes are saved, for
all items. In this case the on_apply
event handler of the task (declared
in the task server module) can be used.
The following code describes how these events are handled:
#...
result = None
if self.task.on_apply:
result = self.task.on_apply(self, delta, params, connection)
if result is None and self.on_apply:
result = self.on_apply(self, delta, params, connection)
if result is None:
result = self.apply_delta(delta, params, connection)
#...
return result
It checks if the task has an on_apply
event handler. If the on_apply
event handler is declared in the task server module, it is executed.
If the on_apply
event handler of the task is not declared or the result
of the event handler returns None
, the method checks whether the item has an
on_apply
event handler. If it is declared in the item server module, it is executed.
If the result returned by the item event handler is None
, the
apply_delta
method of the item is called that generates SQL query,
execute it and returns the result