[pyar] Tengo una idea, tengo una idea??

Joaquín Sorianello listas en joac.com.ar
Sab Ene 19 00:00:12 ART 2013


2013/1/18 Martin Cerdeira <martincerdeira en gmail.com>:
> 2013/1/14 Mariano Garcia Berrotarán <garcia.berrotaran en gmail.com>
>>
>> Hola Martin,
>>
>> 2013/1/14 Martin Cerdeira <martincerdeira en gmail.com>:
>> > - Implemento un static_file() propio, basado en el de bottle, pero que
>> > que
>> > haga lo que yo quiero (es decir, que no reciba una ruta, sino que maneje
>> > un
>> > objeto tipo file en memoria)
>>
>> Nunca use bottle, asi que quizas hay un metodo mas facil, pero una
>> googleada rapida me dijo que probablemente tengas que implementar un
>> objeto BaseResponse
>> (http://bottlepy.org/docs/dev/api.html#bottle.BaseResponse) donde le
>> podes determinar el "body" (y probablemente puedas darle un StringIO)
>>
>> > - Dejo de usar bottle, esperando que otro framework me de lo que
>> > necesito
>> > (no sé si Django o Flask hacen esto)
>>
>> Por otro lado en flask lo que hago es usar la funcion "make_response"
>> (http://flask.pocoo.org/docs/api/#flask.make_response) y hacer algo
>> como lo siguiente:
>>
>> response = make_response(img2)
>> response.headers['Content-Type'] = 'image/jpeg'
>> return respone
>
>
>
> Cómo va? Sabés que intenté implementar HTTPResponse de bottle, pero, no
> logro hacerlo andar:
>
>     headers = dict()
>     headers["Content-Type"] = "image/pjpeg"
>
>     return HTTPResponse(img2.tostring(), **headers)
>
>  Lo que vi que hace bottle, dentro de static_file es basicamente eso mismo,
> pero la diferencia es que el primer parametro (donde yo le mando
> img2.tostring()) bottle le manda un objeto file. Hace esto:
>
> body = '' if request.method == 'HEAD' else open(filename, 'rb')
> return HTTPResponse(body, **headers)
>
> Es la unica diferencia que hay entre lo que yo hago y lo que hace bottle,
> pero, el tema es que yo no tengo ese tipo de objeto, porque no quiero
> guardar el archivo transformado al disco.
>
> La verdad, no se me ocurre como solucionarlo... En tu ejemplo, cuando en
> Flask hacés:
>
> make_response(img2)
>
> img2, que sería??
>
> Saludos!!

Probaste de usar StringIO[1]?

Yo lo usé hace un tiempo para laburar con una lib de pdf que recibia
file-like-objects y quedo bastante bueno[2]


[1] http://docs.python.org/2/library/stringio.html
[2] https://github.com/gcoop-libre/RecibosCoop/blob/master/pdf/pdf.py
(lineas 36 y 38)


-- 
Joaquín Sorianello
A.K.A. Joac
@_joac



More information about the pyar mailing list