Pregunta

Tengo un AT tipo de contenido en Plone. Tiene una serie de campos, incluyendo un campo de archivo. Cuando el usuario edita un objeto de este tipo, ¿cómo puedo saber si un nuevo archivo fue subido?

Por lo demás, ¿cómo puedo saber si alguno de los campos han cambiado?

Actualmente estoy usando los suscriptores a enganchar en el IObjectEditedEvent hacer algunos después de los cambios de objeto - puedo hacer estas cosas aquí

¿Fue útil?

Solución

Sí, IObjectEditedEvent (una subclase directa de IObjectModifiedEvent) se emite cuando se cambia un objeto de contenido arquetipos.

Sin embargo, el evento en sí no le dirá si un nuevo archivo fue subido. Debería ser posible sin embargo, para obtener la solicitud (context.REQUEST debe darle la solicitud actual a través de la adquisición, por ejemplo) y ver si hay un objeto de archivo no coincide con el campo. Si es así, el usuario carga un nuevo archivo para ese campo y se han actualizado el FileField.

Otros consejos

Esto es lo até a la IObjectEditedEvent:

Utilizando el formulario predeterminado creado a partir de la subclasificación ATBlob, implementación (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"

Me gustaría saber lo que otros valores form['file_delete'] puede tener. Parece útil.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top