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

Simone Orsi simahawk a gmail.com
Gio 15 Mar 2012 14:27:48 UTC


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__()


Maggiori informazioni sulla lista Plone-IT