Comment puis-je savoir si un champ a changé de valeur dans un objet AT dans plone?
-
21-09-2019 - |
Question
J'ai un type de contenu AT dans Plone. Il a un certain nombre de domaines, y compris un champ de fichier. Lorsque l'utilisateur édite un objet de ce type, comment puis-je savoir si a envoyé un nouveau fichier?
Pour cette question, comment puis-je savoir si l'un des champs ont été modifiés?
J'utilise actuellement abonnés de connecter le IObjectEditedEvent à faire un peu après les changements d'objet - je peux faire ces choses ici
?La solution
Oui, IObjectEditedEvent
(une sous-classe directe de IObjectModifiedEvent
) est émis lorsqu'un objet contenu Archétypes est modifié.
Cependant, l'événement lui-même ne vous dira pas si un nouveau fichier a été téléchargé. Il devrait être possible cependant d'obtenir la demande (context.REQUEST devrait vous donner la demande actuelle par l'acquisition, par exemple) et voir s'il y a un objet fichier correspondant il y a le champ. Dans ce cas, l'utilisateur a envoyé un nouveau fichier pour ce champ et le FileField
aura été mis à jour.
Autres conseils
Voici ce que je lié au IObjectEditedEvent:
En utilisant le formulaire par défaut créé à partir de sous-classement ATBlob, la mise en œuvre (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"
Je voudrais savoir ce que les autres valeurs form['file_delete']
peut avoir. Il semble utile.