Have done this before, but can not find it (and cant get it to work):
Where can I find code to download a CSV file?
I have been trying variations of this:
class SomeItemsCSV(BrowserView):
"""Returns somethingin CSV format."""
def download_csv_for_mytype(self):
# Find all items of content type 'mytype'
items = api.content.find(portal_type='my_type')
data = BytesIO()
fieldnames = ['title']
writer = csv.DictWriter()
writer = csv.DictWriter(data, fieldnames=fieldnames)
for item in items:
title = item.Title
writer.writerow({'title': title})
# Return CSV data
csv_content = data.getvalue()
return csv_content
def __call__(self):
csv_string = self.download_csv_for_mytype()
#csv_content = bytes(csv_string, 'utf-8')
name = "my_items.csv"
self.request.response.setHeader("Content-Type", "text/csv")
self.request.response.setHeader(
"Content-Disposition", f'attachment; filename="name.csv"'
)
self.request.response.setHeader("Content-Length", len(csv_string))
self.request.response.write(csv_string)