Milimetric has uploaded a new change for review. https://gerrit.wikimedia.org/r/72961
Change subject: standard json response helpers ...................................................................... standard json response helpers Change-Id: Ie1b5020802cab91714af9dbcab49aa0bccdce1f5 --- M wikimetrics/controllers/cohorts.py M wikimetrics/utils.py 2 files changed, 34 insertions(+), 8 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/analytics/wikimetrics refs/changes/61/72961/1 diff --git a/wikimetrics/controllers/cohorts.py b/wikimetrics/controllers/cohorts.py index 21eede3..8eced4a 100644 --- a/wikimetrics/controllers/cohorts.py +++ b/wikimetrics/controllers/cohorts.py @@ -3,7 +3,7 @@ from flask.ext.login import current_user from sqlalchemy.sql import exists from sqlalchemy.orm.exc import NoResultFound, MultipleResultsFound -from ..utils import DateTimeCapableEncoder +from ..utils import json_response, json_error, json_redirect from ..configurables import app, db from ..models import ( Cohort, CohortUser, CohortUserRole, @@ -47,7 +47,6 @@ {mediawiki_username: 'Gabriele', mediawiki_userid: 8, project: 'dewiki'}, ]} """ - d = db.get_session() cohort = None if str(name_or_id).isdigit(): cohort = get_cohort_by_id(int(name_or_id)) @@ -56,7 +55,7 @@ if cohort: cohort_with_wikiusers = populate_cohort_wikiusers(cohort) - return json.dumps(cohort_with_wikiusers, cls=DateTimeCapableEncoder) + return json_response(cohort_with_wikiusers) return '{}', 404 @@ -264,8 +263,8 @@ # NOTE: Not needed right? username = username.encode('utf-8') db_session = db.get_mw_session(project) try: - return db_session.query(MediaWikiUser)\ - .filter(MediaWikiUser.user_name == username)\ + return db_session.query(MediawikiUser)\ + .filter(MediawikiUser.user_name == username)\ .one() except: return None @@ -274,8 +273,8 @@ def get_wikiuser_by_id(id, project): db_session = db.get_mw_session(project) try: - return db_session.query(MediaWikiUser)\ - .filter(MediaWikiUser.user_id == id)\ + return db_session.query(MediawikiUser)\ + .filter(MediawikiUser.user_id == id)\ .one() except: return None diff --git a/wikimetrics/utils.py b/wikimetrics/utils.py index 8596d4b..17b2dbf 100644 --- a/wikimetrics/utils.py +++ b/wikimetrics/utils.py @@ -1,6 +1,34 @@ import json import datetime from time import mktime +from flask import Response + + +def json_response(*args, **kwargs): + """ + Handles returning generic arguments as json in a Flask application. + Takes care of the following custom encoding duties: + * datetime.datetime objects encoded via DateTimeCapableEncoder + """ + data = json.dumps(dict(*args, **kwargs), cls=DateTimeCapableEncoder) + return Response(data, mimetype='application/json') + + +def json_error(message): + """ + Standard json error response for when the ajax caller would rather + have a message with a status 200 than a server error. + """ + return json_response(isError=True, message=message) + + +def json_redirect(url): + """ + Standard json redirect response, for when a client-side redirect + is needed. + """ + return json_response(isRedirect=True, redirectTo=url) + class DateTimeCapableEncoder(json.JSONEncoder): """ @@ -16,4 +44,3 @@ return int(mktime(obj.timetuple())) return json.JSONEncoder.default(self, obj) - -- To view, visit https://gerrit.wikimedia.org/r/72961 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ie1b5020802cab91714af9dbcab49aa0bccdce1f5 Gerrit-PatchSet: 1 Gerrit-Project: analytics/wikimetrics Gerrit-Branch: master Gerrit-Owner: Milimetric <dandree...@wikimedia.org> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits