on_apply evento

Quando o método apply de um item é chamado no cliente ou no servidor, a aplicação do servidor, por padrão, gera uma consulta SQL com base nas alterações feitas no conjunto de dados e a executa.

Esse comportamento pode ser alterado escrevendo um manipulador de evento on_apply no módulo do servidor do item.

Às vezes, torna-se necessário executar algum código quando as alterações são salvas, para todos os itens. Nesse caso, pode-se usar o manipulador de evento on_apply da tarefa (declarado no módulo do servidor da tarefa).

O código a seguir descreve como esses eventos são tratados:

#...
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

Ele verifica se a tarefa possui um manipulador de evento on_apply. Se o manipulador de evento on_apply estiver declarado no módulo do servidor da tarefa, ele é executado.

Se o manipulador de evento on_apply da tarefa não estiver declarado ou o resultado do manipulador for None, o método verifica se o item possui um manipulador de evento on_apply. Se estiver declarado no módulo do servidor do item, ele é executado.

Se o resultado retornado pelo manipulador de evento do item for None, o método apply_delta do item é chamado, que gera a consulta SQL, a executa e retorna o resultado.

Exemplo

Aqui está um exemplo de como o on_apply pode ser usado