[Plone-IT] Products.DataGridField & FileColumn

Riccardo Lemmi riccardo a reflab.com
Gio 6 Set 2012 12:16:49 UTC


On Thursday 06 September 2012, Roberto Rascioni wrote:
> Il 06/09/12 10:24, Riccardo Lemmi ha scritto:
> > On Thursday 06 September 2012, Roberto Rascioni wrote:
> >> Il 05/09/12 11:57, Riccardo Lemmi ha scritto:
> >>> On Wednesday 05 September 2012, Roberto Rascioni wrote:
> >>>> Salve a tutti,
> >>>> avrei la necessità di caricare n file in un singolo Archetype e
> >>>> di associare ad ognuno di essi un titolo.
> >>>> Vorrei evitare di far aggiungere all'utente n (oggetti) File
> >>>> all'interno di un AT folderish ma di far caricare i file
> >>>> direttamente attraverso l'interfaccia di editing dell'AT
> >>>> 
> >>>> Cercando un po' la scelta è ricaduta su Products.DataGridField
> >>>> che non ha purtroppo il campo file disponibile! :(
> >>>> 
> >>>> Sapreste suggerirmi un prodotto o un metodo attraverso il quale
> >>>> integrare Products.DataGridField con il campo file?
> >>>> 
> >>>> Grazie anticipatamente
> >>>> Roberto
> >>> 
> >>> Puoi partire da cotnent, field e widget di SimpleAttachment che
> >>> sono usati da RichDocument.
> >> 
> >> Grazie mille! era proprio quello che stavo cercando!
> >> 
> >> Ho iniziato a fare delle prove con SimpleAttachment ma purtroppo
> >> ho riscontrato delle problematiche che non riesco a risolvere...
> >> Quello che dovrei fare è estendere l'ATEvent e ho aggiunto così
> >> un campo booleano con il widget "AttachmentsManagerWidget" di
> >> SimpleAttachement (come in RichDocument)
> >> 
> >> Il risultato è che il campo viene correttamente aggiunto
> >> all'interfaccia di editing dell'ATEvent ma l'upload dei file non
> >> va mai a buon fine nel senso che i file non vengono mai caricati
> >> nella piattaforma
> >> 
> >> Ho pensato che forse il problema fosse dovuto dal fatto che
> >> ATEvent non è un oggetto folderish così ho provato a fare la
> >> stessa cosa con l'ATFolder, giusto per verificare, ma il problema
> >> non si risolve
> >> 
> >> Ho provato a fare delle prove anche con un nuovo Archetype creato
> >> appositamente allo scopo ma lo stesso non sono riuscito a
> >> risolvere il problema
> >> 
> >> 
> >> Qualche suggerimento su cosa sto sbagliando o su cosa dovrei fare?
> >> ...
> > 
> > - installa SimpleAttachment nel portale (il widget usa dei template
> > definiti in questo prodotto)
> > - controlla l'implementazione di processForm in RichDocument
> 
> @Luca Fabbri: purtroppo l'output della shell non sembra restituire
> alcun errore..
> 
> @Riccardo Lemmi:
> Si, avevo già installato SimpleAttachment e vedendo come fosse
> strutturato RichDocument ho cercato di fare una prova con un nuovo
> archetype includendo l'implementazione processForm ma senza
> successo...
> 
> Di fatto non avevo provato ad includere la stessa implementazione
> nell'estensione dell'ATEvent ho provando proprio ora ma il problema
> purtroppo sembra non essere risolto
> 
> Ora la configurazione che ho è questa
> Non so...forse sto facendo qualche stupido errore nella
> configurazione ma non riesco a capire dov'è l'errore
> 
> from Products.Archetypes.public import BooleanField
> from Products.Archetypes import atapi
> 
> from archetypes.schemaextender.field import ExtensionField
> 
> from zope.component import adapts
> from zope.interface import implements
> from archetypes.schemaextender.interfaces import ISchemaExtender
> from Products.ATContentTypes.interface import IATEvent
> 
> from Products.SimpleAttachment.widget import AttachmentsManagerWidget
> 
> from Products.ATContentTypes.content.event import ATEvent
> 
> 
> class EventExtensionBlobField(ExtensionField, BooleanField):
>      """ New Event field """
> 
> class EventExtender(object):
>      adapts(IATEvent)
>      implements(ISchemaExtender)
> 
>      def __init__(self, context):
>          self.context = context#
> 
>      def getFields(self):
>          return self.fields
> 
>      fields = [
>          EventExtensionBlobField('attachments',
>              default=True,
>              widget=AttachmentsManagerWidget(
>                  label=("Attachments"),
>                  description=(""),
>                  expanded=True,
>              )),
>      ]
> 
>      # enable FTP/WebDAV and friends
>      PUT = ATEvent.PUT
> 
>      def processForm(self, data=1, metadata=0, REQUEST=None,
> values=None): ATEvent.processForm(self, data=data,
> metadata=metadata, REQUEST=REQUEST, values=values)
> 
>          request = REQUEST or self.REQUEST
>          if values:
>              form = values
>          else:
>              form = request.form
> 
>          if "attachmentFile" in form and form["attachmentFile"]:
>              self.widget_attachmentsmanager_upload(state=None)
>          if "imageFile" in form and form["imageFile"]:
>              self.widget_imagesmanager_upload(state=None)
> 
> 
> Grazie ancora per la disponibilità e la pazienza ;)
> Un saluto
> Roberto
> ...

processForm deve essere una patch ad ATEvent quindi oltre a 
schemaextender devi usare:   

   http://pypi.python.org/pypi/collective.monkeypatcher

(oppure fare la patch a mano).

Io ti consiglio di creare un nuovo content type che sostituisca quello 
di default.
-- 
Riccardo Lemmi
Über Developer
Reflab - helping humanitarian action through web innovation
http://www.reflab.com
-------------- parte successiva --------------
Un allegato non testuale è stato rimosso....
Nome:        signature.asc
Tipo:        application/pgp-signature
Dimensione:  198 bytes
Descrizione: This is a digitally signed message part.
URL:         <http://lists.plone.org/pipermail/plone-plone-it/attachments/20120906/8a22e5df/attachment.asc>


Maggiori informazioni sulla lista Plone-IT