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

Gianni Cozzolongo gianniftp a gmail.com
Ven 7 Set 2012 08:30:59 UTC


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>
>
-------------- parte successiva --------------
Un allegato HTML Ŕ stato rimosso...
URL: <http://lists.plone.org/pipermail/plone-plone-it/attachments/20120907/5dac130d/attachment.html>


Maggiori informazioni sulla lista Plone-IT