Quantcast

return di un file su filesystem da view

classic Classic list List threaded Threaded
9 messages Options
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate
star

return di un file su filesystem da view

Francesco Benincasa
Ciao a tutti.

Dunque ho un prodotto sviluppato con dexterity.
All'interno di una view ho inserito un metodo che viene chiamato dalla submit
di un form e dovrebbe restituire un file zip.

Il file in questione non e' un oggetto plone, ma viene creato dinamicamente
su filesystem a seconda dei dati inseriti nel form.

Quindi per far restituire il file, ho fatto cosi':

********************************************************************
iterator = filestream_iterator(zfname, 'rb')
stat = os.stat(zfname)

RESPONSE=self.request.response
RESPONSE.setHeader('Content-Disposition', 'attachment; filename="%s"' % zfname.replace("/tmp/",""))
RESPONSE.setHeader('Content-Type', "application/zip")
RESPONSE.setHeader('Content-Length', stat.st_size)

return iterator
********************************************************************

Ora, in questo modo mi fa scaricare un file zip con il nome corretto ma che in
realta' non e' altro che l'html della view.

Se invece dell'iterator leggo tutto il file (e' un approccio da evitare, ma
per provare ...) restituisce il file zip corretto, ma sempre mischiato con
l'html della vista.

Qualcuno ha idea di quale possa essere il problema?

La mia conf:
Plone 4.0.5
Zope 2.12.17
Python 2.6.6

--
| Francesco Benincasa
| http://www.linkedin.com/in/fbenincasa
****
If one cannot enjoy reading a book over and over again, there is no use
in reading it at all.
                -- Oscar Wilde
_______________________________________________
Plone-IT mailing list
[hidden email]
https://lists.plone.org/mailman/listinfo/plone-plone-it
http://plone-regional-forums.221720.n2.nabble.com/Plone-Italy-f221721.html
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate
star

Re: return di un file su filesystem da view

simahawk
Ciao,

On 03/14/2012 04:07 PM, ciccio2000 wrote:

> Ciao a tutti.
>
> Dunque ho un prodotto sviluppato con dexterity.
> All'interno di una view ho inserito un metodo che viene chiamato dalla submit
> di un form e dovrebbe restituire un file zip.
>
> Il file in questione non e' un oggetto plone, ma viene creato dinamicamente
> su filesystem a seconda dei dati inseriti nel form.
>
> Quindi per far restituire il file, ho fatto cosi':
>
> ********************************************************************
> iterator = filestream_iterator(zfname, 'rb')
> stat = os.stat(zfname)
>
> RESPONSE=self.request.response
> RESPONSE.setHeader('Content-Disposition', 'attachment; filename="%s"' % zfname.replace("/tmp/",""))
> RESPONSE.setHeader('Content-Type', "application/zip")
> RESPONSE.setHeader('Content-Length', stat.st_size)
>
> return iterator
> ********************************************************************
>
> Ora, in questo modo mi fa scaricare un file zip con il nome corretto ma che in
> realta' non e' altro che l'html della view.
>
> Se invece dell'iterator leggo tutto il file (e' un approccio da evitare, ma
> per provare ...) restituisce il file zip corretto, ma sempre mischiato con
> l'html della vista.
>
> Qualcuno ha idea di quale possa essere il problema?
>
> La mia conf:
> Plone 4.0.5
> Zope 2.12.17
> Python 2.6.6

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


_______________________________________________
Plone-IT mailing list
[hidden email]
https://lists.plone.org/mailman/listinfo/plone-plone-it
http://plone-regional-forums.221720.n2.nabble.com/Plone-Italy-f221721.html
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate
star

Re: return di un file su filesystem da view

Francesco Benincasa
* 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.


--
| Francesco Benincasa
| http://www.linkedin.com/in/fbenincasa
****
Soap and education are not as sudden as a massacre, but they are more
deadly in the long run.
                -- Mark Twain
_______________________________________________
Plone-IT mailing list
[hidden email]
https://lists.plone.org/mailman/listinfo/plone-plone-it
http://plone-regional-forums.221720.n2.nabble.com/Plone-Italy-f221721.html
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate
star

Re: return di un file su filesystem da view

simahawk
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
[hidden email]
https://lists.plone.org/mailman/listinfo/plone-plone-it
http://plone-regional-forums.221720.n2.nabble.com/Plone-Italy-f221721.html
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate
star

Re: return di un file su filesystem da view

gianni
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 <[hidden email]>
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
[hidden email]
https://lists.plone.org/mailman/listinfo/plone-plone-it
http://plone-regional-forums.221720.n2.nabble.com/Plone-Italy-f221721.html
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate
star

Re: return di un file su filesystem da view

Vito
Non dovrebbe essere solo una questione di mime type?

Vito

Il giorno 07 settembre 2012 10:30, Gianni Cozzolongo <[hidden email]> 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 <[hidden email]>
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
[hidden email]
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


_______________________________________________
Plone-IT mailing list
[hidden email]
https://lists.plone.org/mailman/listinfo/plone-plone-it
http://plone-regional-forums.221720.n2.nabble.com/Plone-Italy-f221721.html
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate
star

Re: return di un file su filesystem da view

gianni
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 <[hidden email]>
Non dovrebbe essere solo una questione di mime type?

Vito

Il giorno 07 settembre 2012 10:30, Gianni Cozzolongo <[hidden email]> 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 <[hidden email]>
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
[hidden email]
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 <a href="tel:%2B393346330137" value="+393346330137" target="_blank">+393346330137 | skype vito80ba | twitter vito80ba


_______________________________________________
Plone-IT mailing list
[hidden email]
https://lists.plone.org/mailman/listinfo/plone-plone-it
http://plone-regional-forums.221720.n2.nabble.com/Plone-Italy-f221721.html


_______________________________________________
Plone-IT mailing list
[hidden email]
https://lists.plone.org/mailman/listinfo/plone-plone-it
http://plone-regional-forums.221720.n2.nabble.com/Plone-Italy-f221721.html
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate
star

Re: return di un file su filesystem da view

SauZheR at gOOgle
ciao,
puo' essere che tu abbia settato il body del response con il descrittore del file non ancora resettato.

Ti consiglio di fare qualcosa del tipo:

filetemporaneo.seek(0)
self.request.response.setBody(
filetemporaneo.read())

return self.request.response.outputBody()


prova un po' e facci sapere.


;)
alessandro


Il giorno 07 settembre 2012 11:35, Gianni Cozzolongo <[hidden email]> ha scritto:
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 <[hidden email]>
Non dovrebbe essere solo una questione di mime type?

Vito

Il giorno 07 settembre 2012 10:30, Gianni Cozzolongo <[hidden email]> 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 <[hidden email]>
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
[hidden email]
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 <a href="tel:%2B393346330137" value="+393346330137" target="_blank">+393346330137 | skype vito80ba | twitter vito80ba


_______________________________________________
Plone-IT mailing list
[hidden email]
https://lists.plone.org/mailman/listinfo/plone-plone-it
http://plone-regional-forums.221720.n2.nabble.com/Plone-Italy-f221721.html


_______________________________________________
Plone-IT mailing list
[hidden email]
https://lists.plone.org/mailman/listinfo/plone-plone-it
http://plone-regional-forums.221720.n2.nabble.com/Plone-Italy-f221721.html



--
  bye
SauZheR
************************************
l'iterazione è umana...
la ricorsione, Divina!
************************************
reply to: sauzher AT gmail DOT com

_______________________________________________
Plone-IT mailing list
[hidden email]
https://lists.plone.org/mailman/listinfo/plone-plone-it
http://plone-regional-forums.221720.n2.nabble.com/Plone-Italy-f221721.html
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate
star

Re: return di un file su filesystem da view

gianni
ora funziona perfettamente.

grazie per le indicazioni.

a presto

gianni

On 9/12/12, SauZheR <[hidden email]> wrote:

> ciao,
> puo' essere che tu abbia settato il body del response con il descrittore
> del file non ancora resettato.
>
> Ti consiglio di fare qualcosa del tipo:
>
> filetemporaneo.seek(0)
> self.request.response.setBody(filetemporaneo.read())
>
> return self.request.response.outputBody()
>
>
> prova un po' e facci sapere.
>
>
> ;)
> alessandro
>
>
> Il giorno 07 settembre 2012 11:35, Gianni Cozzolongo
> <[hidden email]>ha scritto:
>
>> 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 <[hidden email]>
>>
>>> 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
>>> <[hidden email]
>>> > 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 <[hidden email]>
>>>>
>>>>> 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
>>>>> [hidden email]
>>>>> 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
>>>> [hidden email]
>>>> 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
>>> [hidden email]
>>> https://lists.plone.org/mailman/listinfo/plone-plone-it
>>> http://plone-regional-forums.221720.n2.nabble.com/Plone-Italy-f221721.html
>>>
>>
>>
>> _______________________________________________
>> Plone-IT mailing list
>> [hidden email]
>> https://lists.plone.org/mailman/listinfo/plone-plone-it
>> http://plone-regional-forums.221720.n2.nabble.com/Plone-Italy-f221721.html
>>
>
>
>
> --
>   bye
> SauZheR
> ************************************
> l'iterazione è umana...
> la ricorsione, Divina!
> ************************************
> reply to: sauzher AT gmail DOT com
>
_______________________________________________
Plone-IT mailing list
[hidden email]
https://lists.plone.org/mailman/listinfo/plone-plone-it
http://plone-regional-forums.221720.n2.nabble.com/Plone-Italy-f221721.html
Loading...