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 <[email protected]> > 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 <[email protected]>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 <[email protected]> >> >>> 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 >>> [email protected] >>> 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 >> [email protected] >> 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 > [email protected] > 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 [email protected] https://lists.plone.org/mailman/listinfo/plone-plone-it http://plone-regional-forums.221720.n2.nabble.com/Plone-Italy-f221721.html
