Frage

Ich habe einen AT Inhaltstyp in Plone. Es hat eine Reihe von Feldern, darunter ein Dateifeld. Wenn der Benutzer ein Objekt dieser Art bearbeitet, wie kann ich feststellen, ob eine neue Datei hochgeladen wurde?

Für diese Angelegenheit, wie kann ich feststellen, ob eines der Felder geändert wurde?

Ich bin derzeit Abonnenten mittels eines in die IObjectEditedEvent einzuhaken einige nach den Objektänderungen zu tun - kann ich diese Dinge hier

War es hilfreich?

Lösung

Ja, IObjectEditedEvent (eine direkte Unterklasse von IObjectModifiedEvent) emittiert wird, wenn ein Urbilder Inhaltsobjekt geändert wird.

Doch das Ereignis selbst wird Ihnen nicht sagen, ob eine neue Datei hochgeladen wurde. Es sollte jedoch möglich sein, die Anforderung zu erhalten (context.REQUEST sollten Ihnen die aktuelle Anfrage durch den Erwerb geben, zum Beispiel) und sehen, ob es ein Dateiobjekt gibt es das Feld übereinstimmen. Wenn ja, hochgeladen der Benutzer eine neue Datei für das Feld und die FileField wird aktualisiert.

Andere Tipps

Hier ist, was ich an den IObjectEditedEvent gebunden:

Mit dem Standardformular erstellt von Subklassen ATBlob, Umsetzung (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"

Ich würde gerne wissen, was andere Werte form['file_delete'] haben. Es erscheint sinnvoll.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top