[Plone-IT] Products.DataGridField & FileColumn
Yuri
yurj a alfa.it
Gio 6 Set 2012 12:08:27 UTC
Il 06/09/2012 13:51, Roberto Rascioni ha scritto:
> 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)
>
Io lo uso come è usato in richdocument, con il boolean field. Per il
resto, le macro fanno tutto da sole e non c'è bisogno di toccare
processForm.
BooleanField('displayAttachments',
default=True,
languageIndependent=0,
widget=AttachmentsManagerWidget(
i18n_domain='plone',
label="""Display attachments download box""",
label_msgid='EEPArticleNG_label_displayAttachments',
description="If selected, a list of uploaded
attachments will be presented at the bottom of the document to allow
them to be easily downloaded",
description_msgid='EEPArticleNG_help_displayAttachments',
),
),
),)
e funziona.
Maggiori informazioni sulla lista
Plone-IT