Merlijn van Deen has uploaded a new change for review.

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

Change subject: Add meta info for run, rev and query
......................................................................

Add meta info for run, rev and query

Change-Id: I7631a3fa78c3f8a219a0ce5c6f3da866fcbe0000
---
M quarry/web/app.py
1 file changed, 68 insertions(+), 0 deletions(-)


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

diff --git a/quarry/web/app.py b/quarry/web/app.py
index 862f09c..4aecd3c 100644
--- a/quarry/web/app.py
+++ b/quarry/web/app.py
@@ -36,6 +36,11 @@
 
 _punct_re = re.compile(r'[\t !"#$%&\'()*\-/<=>?@\[\\\]^_`{|},.]+')
 
+def datetime_json_formatter(dt):
+    try:
+        return dt.isoformat()
+    except AttributeError:
+        return TypeError
 
 class QueriesRangeBasedPagination(RangeBasedPagination):
 
@@ -367,6 +372,69 @@
     response.headers['Access-Control-Allow-Origin'] = '*'
     return response
 
+def run_data(qrun):
+    return {
+        'id': qrun.id,
+        'status': qrun.status_message,
+        'timestamp': qrun.timestamp,
+        'extra': json.loads(qrun.extra_info or "{}"),
+    }
+
+def rev_data(rev):
+    return {
+        'id': rev.id,
+        'sql': rev.text,
+        'timestamp': rev.timestamp,
+        'latest_run': rev.latest_run.id,
+    }
+
+def query_data(query):
+    return {
+        'id': query.id,
+        'author': query.user.username,
+        'title': query.title,
+        'timestamp': query.last_touched,
+        'parent': query.parent_id,
+        'latest_revision': query.latest_rev.id,
+        'published': bool(query.published),
+        'description': query.description,
+    }
+
[email protected]("/run/<int:qrun_id>/meta")
+def output_run_meta(qrun_id):
+    qrun = g.conn.session.query(QueryRun).get(qrun_id)
+
+    return Response(json.dumps(
+        {'run': run_data(qrun),
+         'rev': rev_data(qrun.rev),
+         'query': query_data(qrun.rev.query)
+        }, default=datetime_json_formatter),
+        mimetype='application/json',
+    )
+
[email protected]("/rev/<int:rev_id>/meta")
+def output_rev_meta(rev_id):
+    rev = g.conn.session.query(QueryRevision).get(rev_id)
+
+    return Response(json.dumps(
+        {'latest_run': run_data(rev.latest_run),
+         'rev': rev_data(rev),
+         'query': query_data(rev.query)
+        }, default=datetime_json_formatter),
+        mimetype='application/json',
+    )
+
[email protected]("/query/<int:query_id>/meta")
+def output_query_meta(query_id):
+    query = g.conn.session.query(Query).get(query_id)
+
+    return Response(json.dumps(
+        {'latest_run': run_data(query.latest_rev.latest_run),
+         'latest_rev': rev_data(query.latest_rev),
+         'query': query_data(query)
+        }, default=datetime_json_formatter),
+        mimetype='application/json',
+    )
 
 @app.template_filter()
 def timesince(dt, default="just now"):

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I7631a3fa78c3f8a219a0ce5c6f3da866fcbe0000
Gerrit-PatchSet: 1
Gerrit-Project: analytics/quarry/web
Gerrit-Branch: master
Gerrit-Owner: Merlijn van Deen <[email protected]>

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

Reply via email to