From 37d08956723807cf6285c787b741b93670af3ba4 Mon Sep 17 00:00:00 2001 From: Adabriand Furtado Date: Sun, 14 Aug 2016 19:38:34 -0300 Subject: [PATCH] Added a new API endpoint to retrieve projects progress. --- pybossa/api/__init__.py | 9 ++++++++- pybossa/cache/projects.py | 16 +++++++++++++++- 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/pybossa/api/__init__.py b/pybossa/api/__init__.py index c594c9d..9caaaa6 100644 --- a/pybossa/api/__init__.py +++ b/pybossa/api/__init__.py @@ -200,7 +200,14 @@ def leaderboard(): @crossdomain(origin='*', headers=cors_headers) @ratelimit(limit=ratelimits.get('LIMIT'), per=ratelimits.get('PER')) def project_last_answers(): - user_id = None if current_user.is_anonymous() else current_user.id project_id = request.args.get('project_id') data = cached_projects.project_last_answers(project_id) return Response(json.dumps(data), mimetype="application/json") + +@jsonpify +@blueprint.route('/projects_progress') +@crossdomain(origin='*', headers=cors_headers) +@ratelimit(limit=ratelimits.get('LIMIT'), per=ratelimits.get('PER')) +def projects_progress(): + data = cached_projects.projects_progress() + return Response(json.dumps(data), mimetype="application/json") diff --git a/pybossa/cache/projects.py b/pybossa/cache/projects.py index 809f2ce..b1fa9d4 100644 --- a/pybossa/cache/projects.py +++ b/pybossa/cache/projects.py @@ -234,7 +234,21 @@ def project_last_answers(project_id): last_answers = dict() last_answers['project_name'] = project.short_name last_answers['last_answers'] = project_last_answers_data(project.id) - result.append(last_answers) + results.append(last_answers) + return results + +@memoize(timeout=timeouts.get('APP_TIMEOUT')) +def projects_progress(): + projects = session.query(Project).all() + results = [] + for project in projects: + progress = dict() + progress['short_name'] = project.short_name + progress['n_tasks'] = n_tasks(project.id) + progress['n_task_runs'] = n_task_runs(project.id) + progress['n_completed_tasks'] = n_completed_tasks(project.id) + progress['last_activity'] = last_activity(project.id) + results.append(progress) return results @memoize(timeout=timeouts.get('APP_TIMEOUT')) -- libgit2 0.21.2