Domanda

Ho un tipo di contenuto AT in Plone. Ha un certo numero di settori, tra cui un campo di file. Quando l'utente modifica un oggetto di questo tipo, come posso dire se un nuovo file è stato caricato?

A questo proposito, come posso dire se uno dei campi sono stati modificati?

Attualmente sto usando abbonati di agganciare in IObjectEditedEvent a fare un po 'dopo le modifiche degli oggetti - posso fare queste cose qui

?
È stato utile?

Soluzione

Sì, IObjectEditedEvent (una sottoclasse diretta di IObjectModifiedEvent) viene emesso quando un oggetto contenuto Archetipi viene modificato.

Tuttavia, l'evento in sé non vi dirà se un nuovo file è stato caricato. Dovrebbe essere possibile tuttavia, per ottenere la richiesta (context.REQUEST dovrebbe darvi la richiesta corrente attraverso l'acquisizione, per esempio) e vedere se v'è un oggetto file non corrispondente al campo. In tal caso, l'utente ha caricato un nuovo file per il campo e il FileField sarà stato aggiornato.

Altri suggerimenti

Ecco quello che ho legato alla IObjectEditedEvent:

Con il modulo predefinito creato da sottoclasse ATBlob, esecuzione (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"

Mi piacerebbe sapere quali altri valori form['file_delete'] può avere. Sembra utile.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top