| |
@@ -17,69 +17,73 @@
|
| |
# Authors:
|
| |
# Josef Skladanka <jskladan@redhat.com>
|
| |
|
| |
- from oraculum import app, cache, login_manager, oidc
|
| |
- from oraculum.data_providers import PROVIDERS
|
| |
- from oraculum.utils import fedocal, schedule, blockerbugs, meetbot, db_utils, libkarma
|
| |
-
|
| |
- from flask_login import UserMixin, login_required, \
|
| |
- login_user, logout_user, current_user
|
| |
-
|
| |
- import flask
|
| |
- from flask import request, url_for, jsonify, redirect
|
| |
- from werkzeug.contrib.cache import SimpleCache
|
| |
-
|
| |
import json
|
| |
import os
|
| |
import re
|
| |
import urllib
|
| |
import itertools
|
| |
- import re
|
| |
import requests
|
| |
|
| |
+ import flask
|
| |
+
|
| |
+ from flask_login import UserMixin, login_required, \
|
| |
+ login_user, logout_user, current_user
|
| |
+ from flask import request, url_for, jsonify, redirect
|
| |
+
|
| |
+ from oraculum import app, login_manager, oidc
|
| |
+ from oraculum.data_providers import PROVIDERS
|
| |
+ from oraculum.utils import fedocal, schedule, blockerbugs, meetbot, db_utils, libkarma
|
| |
+
|
| |
# FIXME: move somewhere else?
|
| |
class User(UserMixin):
|
| |
def __init__(self, email):
|
| |
self.id = email
|
| |
self.email = email
|
| |
|
| |
-
|
| |
- # FIXME: Move this into a proper config file
|
| |
- CACHE_TIMEOUT = 3600
|
| |
- # MAX_DB_AGE defined in oraculum.utils.db_utils
|
| |
-
|
| |
- @app.route('/api/v1/libkarma')
|
| |
- def api_v1_libkarma():
|
| |
- cached = db_utils.get_db_data("api_v1_libkarma")
|
| |
+ @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()
|
| |
+ 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)
|
| |
+ 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 jsonify(cached)
|
| |
- karma = libkarma.get_updates(schedule.current_stable(), schedule.current_devel(), app.logger)
|
| |
- db_utils.refresh_data("api_v1_libkarma", karma)
|
| |
- return jsonify(karma)
|
| |
-
|
| |
- def get_landing_page_data():
|
| |
- mtgs = fedocal.get_qa_meetings()
|
| |
- last_qa_meeting = meetbot.get_last_qa_meeting()
|
| |
- sched = schedule.get_schedule()
|
| |
- blockers = blockerbugs.get_blockerbugs()
|
| |
- stable = schedule.current_stable()
|
| |
- devel = schedule.current_devel()
|
| |
- resp = {
|
| |
- 'meetings': mtgs,
|
| |
- 'last_qa_meeting': last_qa_meeting,
|
| |
- 'schedule': sched,
|
| |
- 'blockerbugs': blockers,
|
| |
- 'stable': stable,
|
| |
- 'devel': devel,
|
| |
- }
|
| |
- return resp
|
| |
-
|
| |
+ return cached
|
| |
+ karma = libkarma.get_updates(release, app.logger)
|
| |
+ db_utils.refresh_data("api_v1_libkarma_F" + release, karma)
|
| |
+ return karma
|
| |
|
| |
@app.route('/api/v1/landing_page')
|
| |
+ def route_api_v1_landing_page():
|
| |
+ return jsonify(api_v1_landing_page())
|
| |
+
|
| |
def api_v1_landing_page():
|
| |
cached = db_utils.get_db_data("api_v1_landing_page")
|
| |
if cached:
|
| |
- return jsonify(cached)
|
| |
- resp = get_landing_page_data()
|
| |
+ return cached
|
| |
+ resp = {
|
| |
+ 'meetings': fedocal.get_qa_meetings(),
|
| |
+ 'last_qa_meeting': meetbot.get_last_qa_meeting(),
|
| |
+ 'schedule': schedule.get_schedule(),
|
| |
+ 'blockerbugs': blockerbugs.get_blockerbugs(),
|
| |
+ 'stable': schedule.current_stable(),
|
| |
+ 'devel': schedule.current_devel(),
|
| |
+ }
|
| |
db_utils.refresh_data("api_v1_landing_page", resp)
|
| |
return resp
|
| |
|
| |
@@ -103,13 +107,14 @@
|
| |
|
| |
|
| |
@app.route('/api/v1/actions')
|
| |
+ def route_api_v1_actions():
|
| |
+ return jsonify(api_v1_actions())
|
| |
+
|
| |
def api_v1_actions():
|
| |
provider = request.args.get('provider')
|
| |
tags = request.args.get('tags')
|
| |
|
| |
- resp = {'actions': get_actions(provider, tags)}
|
| |
- return jsonify(resp)
|
| |
-
|
| |
+ return {'actions': get_actions(provider, tags)}
|
| |
|
| |
@app.route('/api/v1/actions/providers')
|
| |
def api_v1_actions_providers():
|
| |