Como posso saber se um campo mudou o valor em um objeto AT em Plone?
-
21-09-2019 - |
Pergunta
Eu tenho um tipo de conteúdo em Plone. Possui vários campos, incluindo um campo de arquivo. Quando o usuário edita um objeto desse tipo, como posso saber se um novo arquivo foi enviado?
Por esse motivo, como posso saber se algum dos campos foi alterado?
Atualmente, estou usando os assinantes para conectar -me ao IObjecteditedEvent para fazer alguns depois que as mudanças de objeto - posso fazer essas coisas aqui?
Solução
Sim, IObjectEditedEvent
(uma subclasse direta de IObjectModifiedEvent
) é emitido quando um objeto de conteúdo de arquétipos está sendo alterado.
No entanto, o evento em si não informará se um novo arquivo foi enviado. No entanto, deve ser possível obter a solicitação (context.request deve fornecer a solicitação atual por meio da aquisição, por exemplo) e ver se existe um objeto de arquivo que corresponde ao campo. Nesse caso, o usuário enviou um novo arquivo para esse campo e o FileField
terá sido atualizado.
Outras dicas
Aqui está o que vi ao iObjecteditedEvent:
Usando o formulário padrão criado a partir da subclassing Atblob, implementando (iatblobfile, iatfile, ifileContent)
def editObjectEvent(context, event):
status = context.REQUEST.form.get('file_delete')
if status in ("nochange", NONE):
print "Don't do anything, no change to file."
else:
print "Do something, the file has changed"
Eu gostaria de saber que outros valores form['file_delete']
podem ter. Parece útil.