[Plone-IT] return di un file su filesystem da view

Gianni Cozzolongo gianniftp a gmail.com
Ven 7 Set 2012 09:35:35 UTC


andando avanti col debug trovo che arrivando alla esecuzione del return
vero e proprio del form
.buildout/eggs/z3c.form-2.4.3-py2.6.egg/z3c/form/action.py(104)execute()

il tipo di oggetto del result e' di tipo file e dovrebbe contenere il file
corretto,


ad un certo punto pero'
.buildout/eggs/Zope2-2.13.8-py2.6.egg/ZPublisher/Publish.py(129)publish()
-> response.setBody(result)

il result e' diventato il render del fom ...
cosa non ho capito e dove sbaglio?

Gianni



2012/9/7 Vito Falco <vitofalco a gmail.com>

> Non dovrebbe essere solo una questione di mime type?
> http://kb.iu.edu/data/agtj.html
>
> Vito
>
> Il giorno 07 settembre 2012 10:30, Gianni Cozzolongo <gianniftp a gmail.com>ha scritto:
>
> salve a tutti
>>
>> ho lo stesso problema ( il dowload del file mi presenta il file della
>> pagina del form)
>> solo che invece di una browser view ho un form creato con z3c.form.
>>
>> e quindi la action del form e' gestita dal @button.buttonAndHandler
>>
>> qualsiasi cosa metta come return mi restituisce il codice html della
>> vista.
>>
>> l'oggetto da far salvare e' un file che ho precedentemente salvato in un
>> tempfile.TemporaryFile.
>>
>> come faccio a restituirlo come file da scaricare?
>>
>> buon lavoro
>> Gianni
>>
>>
>>
>> 2012/3/15 Simone Orsi <simahawk a gmail.com>
>>
>>> On 03/15/2012 02:35 PM, ciccio2000 wrote:
>>>
>>>> * giovedý 15 marzo 2012, alle 13:07, Simone Orsi scrive:
>>>>
>>>>> Ciao,
>>>>>
>>>> [...]
>>>>
>>>>> come restituisci il contenuto del file? Quel "return iterator" dove
>>>>> sta?
>>>>>
>>>>> Se restituisci il contenuto del file nel __call__ della view ti deve
>>>>> per forza mostrare il contenuto del file.
>>>>>
>>>>> Tipo:
>>>>>
>>>>> def __call__(self):
>>>>>      return self.get_file_content()
>>>>>
>>>>
>>>> E' in un metodo della view:
>>>>
>>>> class View(grok.View):
>>>>      grok.context(IMapViewer)
>>>>      grok.require('zope2.View')
>>>>
>>>> ...
>>>>
>>>>      def downloadData(self):
>>>>          ...
>>>>          zfname = "/tmp/%s-%s-%s.zip" % (st, et, model)
>>>>          ...
>>>>          iterator = filestream_iterator(zfname, 'rb')
>>>>          RESPONSE.setHeader...
>>>>          return iterator
>>>>
>>>>
>>>> come ho detto il file non e' un oggetto plone,
>>>> ma viene generato su file system dinamicamente
>>>> a seconda di come viene riempito un form
>>>> (che si trova nella view).
>>>>
>>>> ciao e grazie.
>>>>
>>> non importa da dove arriva il contenuto, importa come lo restituisci ;)
>>>
>>> Non so come vuoi che funzioni il tutto ma una possibile soluzione e'
>>> quella che ti ho detto prima, farlo ritornare al __call__.
>>>
>>> Magari puoi mettere un pulsante di submit per il download che richiami
>>> la stessa vista e nel __call__ fai qualcosa del genere:
>>>
>>> def __call__(self):
>>>     if self.request.get('download'):
>>>         return self.downloadData()
>>>     return super(self.__class__,self).__**call__()
>>>
>>> ______________________________**_________________
>>> Plone-IT mailing list
>>> Plone-IT a lists.plone.org
>>> https://lists.plone.org/**mailman/listinfo/plone-plone-**it<https://lists.plone.org/mailman/listinfo/plone-plone-it>
>>> http://plone-regional-forums.**221720.n2.nabble.com/Plone-**
>>> Italy-f221721.html<http://plone-regional-forums.221720.n2.nabble.com/Plone-Italy-f221721.html>
>>>
>>
>>
>> _______________________________________________
>> Plone-IT mailing list
>> Plone-IT a lists.plone.org
>> https://lists.plone.org/mailman/listinfo/plone-plone-it
>> http://plone-regional-forums.221720.n2.nabble.com/Plone-Italy-f221721.html
>>
>
>
>
> --
> *Vito Falco*
> Webdeveloper & designer freelance, Plone enthusiast
> Bari, IT
> tel +393346330137 | skype vito80ba | twitter vito80ba
> Blog http://appuntiplone.wordpress.com
>
>
> _______________________________________________
> Plone-IT mailing list
> Plone-IT a lists.plone.org
> https://lists.plone.org/mailman/listinfo/plone-plone-it
> http://plone-regional-forums.221720.n2.nabble.com/Plone-Italy-f221721.html
>
-------------- parte successiva --------------
Un allegato HTML Ŕ stato rimosso...
URL: <http://lists.plone.org/pipermail/plone-plone-it/attachments/20120907/2e8af5e4/attachment-0001.html>


Maggiori informazioni sulla lista Plone-IT