From 8370161c2363242ce53c8e0e811a52ecb6de18f3 Mon Sep 17 00:00:00 2001 From: Gunnar Schaefer <gsfr@stanford.edu> Date: Mon, 30 Nov 2015 17:16:53 -0800 Subject: [PATCH] Use config collection for config endpoint --- api/api.py | 5 +++-- api/config.py | 3 +++ api/core.py | 21 ++++----------------- 3 files changed, 10 insertions(+), 19 deletions(-) diff --git a/api/api.py b/api/api.py index a7820d86..a3793626 100644 --- a/api/api.py +++ b/api/api.py @@ -7,6 +7,7 @@ import webapp2_extras.routes from . import core from . import jobs +from . import config from handlers import listhandler from handlers import userhandler from handlers import grouphandler @@ -54,8 +55,8 @@ routes = [ webapp2.Route(r'/download', core.Core, handler_method='download', methods=['GET', 'POST'], name='download'), webapp2.Route(r'/reaper', core.Core, handler_method='reaper', methods=['POST']), webapp2.Route(r'/sites', core.Core, handler_method='sites', methods=['GET']), - webapp2.Route(r'/config', core.Config, handler_method='get_config', methods=['GET']), - webapp2.Route(r'/config.js', core.Config, handler_method='get_config_js', methods=['GET']) + webapp2.Route(r'/config', core.Config, methods=['GET']), + webapp2.Route(r'/config.js', core.Config, handler_method='get_js', methods=['GET']) ]), webapp2.Route(r'/api/users', userhandler.UserHandler, handler_method='get_all', methods=['GET']), webapp2.Route(r'/api/users', userhandler.UserHandler, methods=['POST']), diff --git a/api/config.py b/api/config.py index 7b75869e..b367e15b 100644 --- a/api/config.py +++ b/api/config.py @@ -6,6 +6,9 @@ last_update = datetime.datetime.utcfromtimestamp(0) latest_config = None +def get_config(): + return mongo.db.config.find_one({'latest': True}, {'_id': 0, 'latest': 0}) or {} + def _get_item(item): global last_update, latest_config now = datetime.datetime.utcnow() diff --git a/api/core.py b/api/core.py index 690ab209..be927dce 100644 --- a/api/core.py +++ b/api/core.py @@ -25,27 +25,14 @@ from . import tempdir as tempfile logging.getLogger('MARKDOWN').setLevel(logging.WARNING) -# REVIEW: place in config.py? class Config(base.RequestHandler): - def _get_config_map(self): - """ - Whitelist keys that are safe to give to clients. - """ - return { - 'site': { - 'insecure': self.app.config['insecure'], - }, - 'auth': { - 'provider': "Google", - } - } + def get(self): + return config.get_config() - def get_config(self): - return self._get_config_map() + def get_js(self): + self.response.write('config =\n' + json.dumps(self.get(), sort_keys=True, indent=4, separators=(',', ': ')) + '\n;') - def get_config_js(self): - self.response.write("config = " + json.dumps(self._get_config_map()) + ";") class Core(base.RequestHandler): -- GitLab