| |
@@ -30,9 +30,20 @@
|
| |
login_user, logout_user, current_user
|
| |
from flask import request, url_for, jsonify, redirect
|
| |
|
| |
- from oraculum import app, login_manager, oidc
|
| |
+ from oraculum import app, login_manager, oidc, CACHE
|
| |
from oraculum.data_providers import PROVIDERS
|
| |
- from oraculum.utils import fedocal, schedule, blockerbugs, meetbot, db_utils, libkarma
|
| |
+ from oraculum.utils import fedocal, schedule, blockerbugs, meetbot, cache_utils, libkarma
|
| |
+
|
| |
+ @app.before_first_request
|
| |
+ def register_cache_providers():
|
| |
+ """
|
| |
+ Add providers to be cached here
|
| |
+ """
|
| |
+ app.logger.debug('Registering cache refreshers')
|
| |
+ CACHE.register('landing_page', api_v1_landing_page)
|
| |
+ CACHE.register('bodhi', api_v1_all_bodhi_updates)
|
| |
+ for p_name, p_module in PROVIDERS.items():
|
| |
+ CACHE.register(p_name, p_module.get_actions)
|
| |
|
| |
# FIXME: move somewhere else?
|
| |
class User(UserMixin):
|
| |
@@ -42,41 +53,29 @@
|
| |
|
| |
@app.route('/api/v1/libkarma/<release>', methods=['GET'])
|
| |
def route_api_v1_libkarma(release):
|
| |
- data = api_v1_libkarma(release)
|
| |
- if data:
|
| |
- return jsonify(data)
|
| |
- return jsonify({'error': 'Release %s not found' % release}), 404
|
| |
-
|
| |
- def api_v1_libkarma(release):
|
| |
- landing_page = api_v1_landing_page()
|
| |
+ landing_page = CACHE.get('landing_page')
|
| |
current_releases = [str(i) for i in [(landing_page["stable"] - 1), landing_page["stable"], landing_page["devel"]]]
|
| |
if release in current_releases:
|
| |
- return get_updates_for_release(release)
|
| |
+ return jsonify(CACHE.get('bodhi')["F" + release])
|
| |
if release.lower() == 'all':
|
| |
- updates = {}
|
| |
- for single_release in current_releases:
|
| |
- app.logger.debug("Appending updates for release: %s" % single_release)
|
| |
- updates["F" + single_release] = get_updates_for_release(single_release)
|
| |
- return updates
|
| |
- return None
|
| |
-
|
| |
- def get_updates_for_release(release):
|
| |
- cached = db_utils.get_db_data("api_v1_libkarma_F" + release)
|
| |
- if cached:
|
| |
- return cached
|
| |
- karma = libkarma.get_updates(release, app.logger)
|
| |
- db_utils.refresh_data("api_v1_libkarma_F" + release, karma)
|
| |
- return karma
|
| |
+ return jsonify(CACHE.get('bodhi'))
|
| |
+ return jsonify({'error': 'Release %s not found' % release}), 404
|
| |
+
|
| |
+ def api_v1_all_bodhi_updates():
|
| |
+ landing_page = CACHE.get('landing_page')
|
| |
+ current_releases = [str(i) for i in [(landing_page["stable"] - 1), landing_page["stable"], landing_page["devel"]]]
|
| |
+ updates = {}
|
| |
+ for single_release in current_releases:
|
| |
+ app.logger.debug("Appending updates for release: %s" % single_release)
|
| |
+ updates["F" + single_release] = libkarma.get_updates(single_release, app.logger)
|
| |
+ return updates
|
| |
|
| |
@app.route('/api/v1/landing_page')
|
| |
def route_api_v1_landing_page():
|
| |
- return jsonify(api_v1_landing_page())
|
| |
+ return jsonify(CACHE.get('landing_page'))
|
| |
|
| |
def api_v1_landing_page():
|
| |
- cached = db_utils.get_db_data("api_v1_landing_page")
|
| |
- if cached:
|
| |
- return cached
|
| |
- resp = {
|
| |
+ return {
|
| |
'meetings': fedocal.get_qa_meetings(),
|
| |
'last_qa_meeting': meetbot.get_last_qa_meeting(),
|
| |
'schedule': schedule.get_schedule(),
|
| |
@@ -84,19 +83,11 @@
|
| |
'stable': schedule.current_stable(),
|
| |
'devel': schedule.current_devel(),
|
| |
}
|
| |
- db_utils.refresh_data("api_v1_landing_page", resp)
|
| |
- return resp
|
| |
|
| |
def get_actions(provider=None, tags=None):
|
| |
actions = []
|
| |
for p_name, p_module in PROVIDERS.items():
|
| |
- cached = db_utils.get_db_data(p_name)
|
| |
- if cached:
|
| |
- actions.extend(cached)
|
| |
- else:
|
| |
- p_actions = p_module.get_actions()
|
| |
- actions.extend(p_actions)
|
| |
- db_utils.refresh_data(p_name, p_actions)
|
| |
+ actions.extend(CACHE.get(p_name))
|
| |
|
| |
if provider:
|
| |
actions = [a for a in actions if a['provider'] == provider]
|
| |