from cStringIO import StringIO
from csv import DictWriter
from aquarium.screen.Controller import Controller
class index(Controller):
CSV_FIELDS = ["id", "subject", "name", "email", "created", "parent", "body"]
def __call__(self):
ctx = self._ctx
ctx.iLib.forward("echo", data=self._generateRows(),
contentType="application/vnd.ms-excel",
headers=[("Content-Disposition", 'filename="Messages.csv"')])
def _generateRows(self):
ctx = self._ctx
buf = StringIO()
writer = DictWriter(buf, self.CSV_FIELDS)
for message in ctx.dba.Message.getAllAsGenerator():
writer.writerow(message)
yield buf.getvalue()
buf.seek(0)
buf.truncate()
|