jenkins-bot has submitted this change and it was merged.
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
M quarry/web/models/query.py
M quarry/web/models/queryrevision.py
M quarry/web/models/queryrun.py
M quarry/web/utils/__init__.py
5 files changed, 92 insertions(+), 0 deletions(-)
Approvals:
Yuvipanda: Looks good to me, approved
jenkins-bot: Verified
diff --git a/quarry/web/app.py b/quarry/web/app.py
index 862f09c..4152b49 100644
--- a/quarry/web/app.py
+++ b/quarry/web/app.py
@@ -6,6 +6,7 @@
from models.queryrun import QueryRun
from models.star import Star
from results import SQLiteResultReader
+from utils import json_formatter
# This just provides the translit/long codec, unused otherwise
import translitcodec # NOQA
import re
@@ -368,6 +369,48 @@
return response
[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': qrun,
+ 'rev': qrun.rev,
+ 'query': qrun.rev.query
+ }, default=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': rev.latest_run,
+ 'rev': rev,
+ 'query': rev.query
+ }, default=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': query.latest_rev.latest_run,
+ 'latest_rev': query.latest_rev,
+ 'query': query
+ }, default=json_formatter),
+ mimetype='application/json',
+ )
+
+
@app.template_filter()
def timesince(dt, default="just now"):
"""
diff --git a/quarry/web/models/query.py b/quarry/web/models/query.py
index d2ab9e9..4445fd6 100644
--- a/quarry/web/models/query.py
+++ b/quarry/web/models/query.py
@@ -24,3 +24,15 @@
latest_rev = relationship('QueryRevision',
primaryjoin='Query.latest_rev_id ==
QueryRevision.id',
uselist=False)
+
+ def to_json(self):
+ return {
+ 'id': self.id,
+ 'author': self.user.username,
+ 'title': self.title,
+ 'timestamp': self.last_touched,
+ 'parent': self.parent_id,
+ 'latest_revision': self.latest_rev.id,
+ 'published': bool(self.published),
+ 'description': self.description,
+ }
diff --git a/quarry/web/models/queryrevision.py
b/quarry/web/models/queryrevision.py
index 80f3f8d..79afd3c 100644
--- a/quarry/web/models/queryrevision.py
+++ b/quarry/web/models/queryrevision.py
@@ -30,3 +30,11 @@
# restrict access to this from mysql
return ("Hitting information_schema", "Unauthorized access to
restricted database")
return True
+
+ def to_json(self):
+ return {
+ 'id': self.id,
+ 'sql': self.text,
+ 'timestamp': self.timestamp,
+ 'latest_run': self.latest_run.id,
+ }
diff --git a/quarry/web/models/queryrun.py b/quarry/web/models/queryrun.py
index 8990d20..02abd0e 100644
--- a/quarry/web/models/queryrun.py
+++ b/quarry/web/models/queryrun.py
@@ -49,3 +49,11 @@
json.dumps(meta),
self.rev.text
)
+
+ def to_json(self):
+ return {
+ 'id': self.id,
+ 'status': self.status_message,
+ 'timestamp': self.timestamp,
+ 'extra': json.loads(self.extra_info or "{}"),
+ }
diff --git a/quarry/web/utils/__init__.py b/quarry/web/utils/__init__.py
index e69de29..6e6cb46 100644
--- a/quarry/web/utils/__init__.py
+++ b/quarry/web/utils/__init__.py
@@ -0,0 +1,21 @@
+def datetime_json_formatter(dt):
+ try:
+ return dt.isoformat()
+ except AttributeError:
+ raise TypeError
+
+
+def to_json_formatter(dt):
+ try:
+ return dt.to_json()
+ except AttributeError:
+ raise TypeError
+
+
+def json_formatter(dt):
+ for formatter in [datetime_json_formatter, to_json_formatter]:
+ try:
+ return formatter(dt)
+ except TypeError:
+ pass
+ raise TypeError(dt)
--
To view, visit https://gerrit.wikimedia.org/r/178128
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: I7631a3fa78c3f8a219a0ce5c6f3da866fcbe0000
Gerrit-PatchSet: 3
Gerrit-Project: analytics/quarry/web
Gerrit-Branch: master
Gerrit-Owner: Merlijn van Deen <[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