Commit 37d08956723807cf6285c787b741b93670af3ba4

Authored by Adabriand Furtado
1 parent 8d6ee39a
Exists in master

Added a new API endpoint to retrieve projects progress.

pybossa/api/__init__.py
... ... @@ -200,7 +200,14 @@ def leaderboard():
200 200 @crossdomain(origin='*', headers=cors_headers)
201 201 @ratelimit(limit=ratelimits.get('LIMIT'), per=ratelimits.get('PER'))
202 202 def project_last_answers():
203   - user_id = None if current_user.is_anonymous() else current_user.id
204 203 project_id = request.args.get('project_id')
205 204 data = cached_projects.project_last_answers(project_id)
206 205 return Response(json.dumps(data), mimetype="application/json")
  206 +
  207 +@jsonpify
  208 +@blueprint.route('/projects_progress')
  209 +@crossdomain(origin='*', headers=cors_headers)
  210 +@ratelimit(limit=ratelimits.get('LIMIT'), per=ratelimits.get('PER'))
  211 +def projects_progress():
  212 + data = cached_projects.projects_progress()
  213 + return Response(json.dumps(data), mimetype="application/json")
... ...
pybossa/cache/projects.py
... ... @@ -234,7 +234,21 @@ def project_last_answers(project_id):
234 234 last_answers = dict()
235 235 last_answers['project_name'] = project.short_name
236 236 last_answers['last_answers'] = project_last_answers_data(project.id)
237   - result.append(last_answers)
  237 + results.append(last_answers)
  238 + return results
  239 +
  240 +@memoize(timeout=timeouts.get('APP_TIMEOUT'))
  241 +def projects_progress():
  242 + projects = session.query(Project).all()
  243 + results = []
  244 + for project in projects:
  245 + progress = dict()
  246 + progress['short_name'] = project.short_name
  247 + progress['n_tasks'] = n_tasks(project.id)
  248 + progress['n_task_runs'] = n_task_runs(project.id)
  249 + progress['n_completed_tasks'] = n_completed_tasks(project.id)
  250 + progress['last_activity'] = last_activity(project.id)
  251 + results.append(progress)
238 252 return results
239 253  
240 254 @memoize(timeout=timeouts.get('APP_TIMEOUT'))
... ...