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

?
Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top