Yuvipanda has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/156469

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, 26 insertions(+), 2 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/analytics/quarry/web 
refs/changes/69/156469/1

diff --git a/quarry/web/output.py b/quarry/web/output.py
index 882daa7..3aefa99 100644
--- a/quarry/web/output.py
+++ b/quarry/web/output.py
@@ -1,10 +1,33 @@
 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 Echo(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)
+    pseudo_buffer = Echo()
+    writer = unicodecsv.writer(pseudo_buffer, delimiter=delim)
+    def respond():
+        for row in rows:
+            writer.writerow(row)
+            yield pseudo_buffer.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: newchange
Gerrit-Change-Id: I80228191b266d8ec6a6d498a5079a1f9ba78ce26
Gerrit-PatchSet: 1
Gerrit-Project: analytics/quarry/web
Gerrit-Branch: master
Gerrit-Owner: Yuvipanda <[email protected]>

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

Reply via email to