Wie kann ich feststellen, ob ein Feldwert in einem AT-Objekt in Plone hat sich geändert?
-
21-09-2019 - |
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
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.