2015-02-18

Otro truquito para web2py

A veces, uno quiere generar un archivo en el sever ejecutando un comando, stremearlo al cliente y borrarlo. Acá les muestro un pequeño hack que hice para hacer eso. Asumiendo que el archivo que generó se llama fname, hay que poner esto al final del método de su controller:

        class StreamAndCleanUp(object):
            def __init__(self):
                stream = file(fname, "rb")
                self.stream = stream
                self.name =  self.stream.name
                self.read = stream.read
               
            def close(self):
                self.stream.close()
                os.remove(fname)
                # You can also put here other actions you need to make after streaming the file

        return response.stream(StreamAndCleanUp())


Happy hacking,
Aureliano.

No hay comentarios.: