From 7a5119c2ba22c786e40cf3fbedb15764b6ffbdec Mon Sep 17 00:00:00 2001
From: Harsha Kethineni <harshakethineni@flywheel.io>
Date: Tue, 13 Jun 2017 11:19:15 -0500
Subject: [PATCH] csv file can be downloaded

---
 api/handlers/reporthandler.py | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/api/handlers/reporthandler.py b/api/handlers/reporthandler.py
index e12f567b..43e321e0 100644
--- a/api/handlers/reporthandler.py
+++ b/api/handlers/reporthandler.py
@@ -1,12 +1,14 @@
 import copy
 import csv
 import datetime
+import os
 
 import bson
 import dateutil
 import pymongo
 
 from .. import config
+from .. import tempdir as tempfile
 from .. import util
 from ..web import base
 
@@ -61,14 +63,16 @@ class ReportHandler(base.RequestHandler):
 
         if self.superuser_request or report.user_can_generate(self.uid):
             if report_type == 'accesslog' and self.request.params.get('csv') == 'true':
-                csv_file = open("acceslog.csv", 'w+')
+                tempdir = tempfile.TemporaryDirectory(prefix='.tmp', dir=config.get_item('persistent', 'data_path'))
+                csv_file = open(os.path.join(tempdir.name, 'acceslog.csv'), 'w+')
                 writer = csv.DictWriter(csv_file, ACCESS_LOG_FIELDS)
                 writer.writeheader()
 
                 for doc in report.build():
                     writer.writerow(doc)
 
-                self.response.app_iter = csv_file
+                csv_file.close()
+                self.response.app_iter = open(os.path.join(tempdir.name, 'acceslog.csv'), 'r')
                 self.response.headers['Content-Type'] = 'text/csv'
                 self.response.headers['Content-Disposition'] = 'attachment; filename="acceslog.csv"'
             else:
-- 
GitLab