jenkins-bot has submitted this change and it was merged.

Change subject: Added CSV and TSV output format generation
......................................................................


Added CSV and TSV output format generation

Change-Id: I80228191b266d8ec6a6d498a5079a1f9ba78ce26
---
M quarry/web/output.py
M requirements.txt
2 files changed, 28 insertions(+), 1 deletion(-)

Approvals:
  Yuvipanda: Looks good to me, approved
  jenkins-bot: Verified



diff --git a/quarry/web/output.py b/quarry/web/output.py
index 882daa7..5ba11b5 100644
--- a/quarry/web/output.py
+++ b/quarry/web/output.py
@@ -1,10 +1,36 @@
 from flask import Response
 import json
+import unicodecsv
 
 
 def get_formatted_response(format, reader, resultset_id):
     if format == 'json':
         return json_formatter(reader, resultset_id)
+    elif format == 'csv':
+        return separated_formatter(reader, resultset_id, ',')
+    elif format == 'tsv':
+        return separated_formatter(reader, resultset_id, "\t")
+
+
+class OneLineRetainer(object):
+    def __init__(self):
+        self.last_written = None
+
+    def write(self, value):
+        self.last_written = value
+
+
+def separated_formatter(reader, resultset_id, delim=','):
+    rows = reader.get_rows(resultset_id)
+    retainer = OneLineRetainer()
+    writer = unicodecsv.writer(retainer, delimiter=delim)
+
+    def respond():
+        for row in rows:
+            writer.writerow(row)
+            yield retainer.last_written
+
+    return Response(respond(), content_type='text/csv')
 
 
 def json_formatter(reader, resultset_id):
diff --git a/requirements.txt b/requirements.txt
index 83fbf68..971c391 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -4,6 +4,7 @@
 PyJWT==0.2.1
 PyMySQL==0.6.2
 PyYAML==3.11
+SQLAlchemy==0.9.7
 Werkzeug==0.9.6
 amqp==1.4.5
 anyjson==0.3.3
@@ -19,5 +20,5 @@
 requests==2.3.0
 requests-oauthlib==0.4.1
 six==1.7.3
+unicodecsv==0.9.4
 wsgiref==0.1.2
-SQLAlchemy==0.9.7

-- 
To view, visit https://gerrit.wikimedia.org/r/156469
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: I80228191b266d8ec6a6d498a5079a1f9ba78ce26
Gerrit-PatchSet: 3
Gerrit-Project: analytics/quarry/web
Gerrit-Branch: master
Gerrit-Owner: Yuvipanda <[email protected]>
Gerrit-Reviewer: Yuvipanda <[email protected]>
Gerrit-Reviewer: jenkins-bot <>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to