def home(): """ Render home page with the cached apps and users""" d = { 'featured': cached_apps.get_featured_front_page(), 'top_apps': cached_apps.get_top(), 'top_users': None } # Get all the categories with apps categories = cached_cat.get_used() d['categories'] = categories d['categories_apps'] = {} for c in categories: tmp_apps, count = cached_apps.get(c['short_name'], per_page=20) d['categories_apps'][str(c['short_name'])] = tmp_apps # Add featured tmp_apps, count = cached_apps.get_featured('featured', per_page=20) if count > 0: featured = model.category.Category(name='Featured', short_name='featured') d['categories'].insert(0, featured) d['categories_apps']['featured'] = tmp_apps if current_app.config['ENFORCE_PRIVACY'] and current_user.is_authenticated( ): if current_user.admin: d['top_users'] = cached_users.get_top() if not current_app.config['ENFORCE_PRIVACY']: d['top_users'] = cached_users.get_top() return render_template('/home/index.html', **d)
def get(self, oid=None): """Return global stats.""" n_pending_tasks = stats.n_total_tasks_site() - stats.n_task_runs_site() n_users = stats.n_auth_users() + stats.n_anon_users() n_projects = cached_projects.n_published() + cached_projects.n_count('draft') data = dict(n_projects=n_projects, n_users=n_users, n_task_runs=stats.n_task_runs_site(), n_pending_tasks=n_pending_tasks, categories=[]) # Add Categories categories = cached_categories.get_used() for c in categories: datum = dict() datum[c['short_name']] = cached_projects.n_count(c['short_name']) data['categories'].append(datum) # Add Featured datum = dict() datum['featured'] = cached_projects.n_count('featured') data['categories'].append(datum) # Add Draft datum = dict() datum['draft'] = cached_projects.n_count('draft') data['categories'].append(datum) return Response(json.dumps(data), 200, mimetype='application/json')
def home(): """ Render home page with the cached apps and users""" page = 1 per_page = current_app.config.get('APPS_PER_PAGE') if per_page is None: # pragma: no cover per_page = 5 d = {'top_apps': cached_apps.get_top(), 'top_users': None} # Get all the categories with apps categories = cached_cat.get_used() d['categories'] = categories d['categories_apps'] = {} for c in categories: tmp_apps = cached_apps.get(c['short_name'], page, per_page) d['categories_apps'][c['short_name']] = tmp_apps # Add featured tmp_apps = cached_apps.get_featured('featured', page, per_page) if len(tmp_apps) > 0: featured = model.category.Category(name='Featured', short_name='featured') d['categories'].insert(0,featured) d['categories_apps']['featured'] = tmp_apps if current_app.config['ENFORCE_PRIVACY'] and current_user.is_authenticated(): if current_user.admin: d['top_users'] = cached_users.get_top() if not current_app.config['ENFORCE_PRIVACY']: d['top_users'] = cached_users.get_top() return render_template('/home/index.html', **d)
def get(self, id): """Return global stats.""" n_pending_tasks = stats.n_total_tasks_site() - stats.n_task_runs_site() n_users = stats.n_auth_users() + stats.n_anon_users() n_projects = cached_apps.n_published() + cached_apps.n_draft() data = dict(n_projects=n_projects, n_users=n_users, n_task_runs=stats.n_task_runs_site(), n_pending_tasks=n_pending_tasks, categories=[]) # Add Categories categories = cached_categories.get_used() for c in categories: datum = dict() datum[c['short_name']] = cached_apps.n_count(c['short_name']) data['categories'].append(datum) # Add Featured datum = dict() datum['featured'] = cached_apps.n_featured() data['categories'].append(datum) # Add Draft datum = dict() datum['draft'] = cached_apps.n_draft() data['categories'].append(datum) return Response(json.dumps(data), 200, mimetype='application/json')
def home(): """ Render home page with the cached apps and users""" d = {'featured': cached_apps.get_featured_front_page(), 'top_apps': cached_apps.get_top(), 'top_users': None} # Get all the categories with apps categories = cached_cat.get_used() d['categories'] = categories d['categories_apps'] = {} for c in categories: tmp_apps, count = cached_apps.get(c['short_name'], per_page=20) d['categories_apps'][str(c['short_name'])] = tmp_apps # Add featured tmp_apps, count = cached_apps.get_featured('featured', per_page=20) if count > 0: featured = model.category.Category(name='Featured', short_name='featured') d['categories'].insert(0,featured) d['categories_apps']['featured'] = tmp_apps if current_app.config['ENFORCE_PRIVACY'] and current_user.is_authenticated(): if current_user.admin: d['top_users'] = cached_users.get_top() if not current_app.config['ENFORCE_PRIVACY']: d['top_users'] = cached_users.get_top() return render_template('/home/index.html', **d)
def home(): """Render home page with the cached projects and users.""" page = 1 per_page = current_app.config.get('APPS_PER_PAGE') if per_page is None: # pragma: no cover per_page = 5 d = {'top_projects': cached_projects.get_top(), 'top_users': None} # Get all the categories with projects categories = cached_cat.get_used() d['categories'] = categories d['categories_projects'] = {} for c in categories: tmp_projects = cached_projects.get(c['short_name'], page, per_page) d['categories_projects'][c['short_name']] = tmp_projects # Add featured tmp_projects = cached_projects.get_featured('featured', page, per_page) if len(tmp_projects) > 0: featured = Category(name='Featured', short_name='featured') d['categories'].insert(0, featured) d['categories_projects']['featured'] = tmp_projects if (current_app.config['ENFORCE_PRIVACY'] and current_user.is_authenticated()): if current_user.admin: d['top_users'] = cached_users.get_top() if not current_app.config['ENFORCE_PRIVACY']: d['top_users'] = cached_users.get_top() return render_template('/home/index.html', **d)
def test_get_used_returns_only_categories_with_projects(self): used_category = CategoryFactory.create() ProjectFactory.create(category=used_category) unused_category = CategoryFactory.create() used_categories = cached_categories.get_used() assert used_categories[0]['id'] == used_category.id, used_categories
def test_get_used_returns_only_categories_with_projects(self): used_category = CategoryFactory.create() ProjectFactory.create(category=used_category) unused_category = CategoryFactory.create() used_categories = cached_categories.get_used() assert used_categories[0]["id"] == used_category.id, used_categories
def warm_cache(): # pragma: no cover """Background job to warm cache.""" from pybossa.core import create_app app = create_app(run_as_server=False) # Cache 3 pages projects_cached = [] pages = range(1, 4) import pybossa.cache.projects as cached_projects import pybossa.cache.categories as cached_cat import pybossa.cache.users as cached_users import pybossa.cache.project_stats as stats def warm_project(_id, short_name, featured=False): if _id not in projects_cached: cached_projects.get_project(short_name) cached_projects.n_tasks(_id) n_task_runs = cached_projects.n_task_runs(_id) cached_projects.overall_progress(_id) cached_projects.last_activity(_id) cached_projects.n_completed_tasks(_id) cached_projects.n_volunteers(_id) if n_task_runs >= 1000 or featured: # print ("Getting stats for %s as it has %s task runs" % # (short_name, n_task_runs)) stats.get_stats(_id, app.config.get('GEO')) projects_cached.append(_id) # Cache top projects projects = cached_projects.get_top() for p in projects: warm_project(p['id'], p['short_name']) for page in pages: projects = cached_projects.get_featured('featured', page, app.config['APPS_PER_PAGE']) for p in projects: warm_project(p['id'], p['short_name'], featured=True) # Categories categories = cached_cat.get_used() for c in categories: for page in pages: projects = cached_projects.get(c['short_name'], page, app.config['APPS_PER_PAGE']) for p in projects: warm_project(p['id'], p['short_name']) # Users users = cached_users.get_leaderboard(app.config['LEADERBOARD'], 'anonymous') for user in users: # print "Getting stats for %s" % user['name'] cached_users.get_user_summary(user['name']) cached_users.projects_contributed_cached(user['id']) cached_users.published_projects_cached(user['id']) cached_users.draft_projects_cached(user['id']) cached_users.get_top() return True
def api(): """Render help/api page""" categories = cached_cat.get_used() apps, count = cached_apps.get(categories[0]["short_name"]) if len(apps) > 0: app_id = choice(apps)["id"] else: app_id = None return render_template("help/api.html", title="Help: API", app_id=app_id)
def api(): """Render help/api page""" categories = cached_cat.get_used() apps, count = cached_apps.get(categories[0]['short_name']) if len(apps) > 0: app_id = choice(apps)['id'] else: app_id = None return render_template('help/api.html', title="Help: API", app_id=app_id)
def api(): """Render help/api page.""" categories = cached_cat.get_used() projects = cached_projects.get(categories[0]["short_name"]) if len(projects) > 0: project_id = choice(projects)["id"] else: # pragma: no cover project_id = None return render_template("help/api.html", title="Help: API", project_id=project_id)
def warm_cache(): # pragma: no cover """Background job to warm cache.""" from pybossa.core import create_app app = create_app(run_as_server=False) projects_cached = [] import pybossa.cache.projects as cached_projects import pybossa.cache.categories as cached_cat import pybossa.cache.users as cached_users import pybossa.cache.project_stats as stats from pybossa.util import rank from pybossa.core import user_repo def warm_project(_id, short_name, featured=False): if _id not in projects_cached: #cached_projects.get_project(short_name) #cached_projects.n_tasks(_id) #n_task_runs = cached_projects.n_task_runs(_id) #cached_projects.overall_progress(_id) #cached_projects.last_activity(_id) #cached_projects.n_completed_tasks(_id) #cached_projects.n_volunteers(_id) #cached_projects.browse_tasks(_id) #if n_task_runs >= 1000 or featured: # # print ("Getting stats for %s as it has %s task runs" % # # (short_name, n_task_runs)) stats.update_stats(_id, app.config.get('GEO')) projects_cached.append(_id) # Cache top projects projects = cached_projects.get_top() for p in projects: warm_project(p['id'], p['short_name']) # Cache 3 pages to_cache = 3 * app.config['APPS_PER_PAGE'] projects = rank(cached_projects.get_all_featured('featured'))[:to_cache] for p in projects: warm_project(p['id'], p['short_name'], featured=True) # Categories categories = cached_cat.get_used() for c in categories: projects = rank(cached_projects.get_all(c['short_name']))[:to_cache] for p in projects: warm_project(p['id'], p['short_name']) # Users users = cached_users.get_leaderboard(app.config['LEADERBOARD']) for user in users: # print "Getting stats for %s" % user['name'] print user_repo u = user_repo.get_by_name(user['name']) cached_users.get_user_summary(user['name']) cached_users.projects_contributed_cached(u.id) cached_users.published_projects_cached(u.id) cached_users.draft_projects_cached(u.id) return True
def api(): """Render help/api page.""" categories = cached_cat.get_used() apps = cached_projects.get(categories[0]['short_name']) if len(apps) > 0: project_id = choice(apps)['id'] else: # pragma: no cover project_id = None return render_template('help/api.html', title="Help: API", project_id=project_id)
def test_get_used_returns_requiered_fields(self): used_category = CategoryFactory.create() ProjectFactory.create(category=used_category) fields = ('id', 'name', 'short_name', 'description') used_categories = cached_categories.get_used() for field in fields: assert field in list(used_categories[0].keys()) assert len(fields) == len(list(used_categories[0].keys()))
def test_get_used_returns_requiered_fields(self): used_category = CategoryFactory.create() ProjectFactory.create(category=used_category) fields = ("id", "name", "short_name", "description") used_categories = cached_categories.get_used() for field in fields: assert field in used_categories[0].keys() assert len(fields) == len(used_categories[0].keys())
def api(): """Render help/api page""" categories = cached_cat.get_used() apps, count = cached_apps.get(categories[0]['short_name']) if len(apps) > 0: app_id = choice(apps)['id'] else: # pragma: no cover app_id = None return render_template('help/api.html', title="Help: API", app_id=app_id)
def api(): """Render help/api page.""" categories = cached_cat.get_used() projects = cached_projects.get(categories[0]['short_name']) if len(projects) > 0: project_id = choice(projects)['id'] else: # pragma: no cover project_id = None response = dict(template='help/api.html', title="Help: API", project_id=project_id) return handle_content_type(response)
def warm_cache(): # pragma: no cover """Background job to warm cache.""" from pybossa.core import create_app app = create_app(run_as_server=False) # Cache 3 pages apps_cached = [] pages = range(1, 4) import pybossa.cache.apps as cached_apps import pybossa.cache.categories as cached_cat import pybossa.cache.users as cached_users import pybossa.cache.project_stats as stats def warm_app(id, short_name, featured=False): if id not in apps_cached: cached_apps.get_app(short_name) cached_apps.n_tasks(id) n_task_runs = cached_apps.n_task_runs(id) cached_apps.overall_progress(id) cached_apps.last_activity(id) cached_apps.n_completed_tasks(id) cached_apps.n_volunteers(id) if n_task_runs >= 1000 or featured: print ("Getting stats for %s as it has %s task runs" % (short_name, n_task_runs)) stats.get_stats(id, app.config.get('GEO')) apps_cached.append(id) # Cache top projects apps = cached_apps.get_top() for a in apps: warm_app(a['id'], a['short_name']) for page in pages: apps = cached_apps.get_featured('featured', page, app.config['APPS_PER_PAGE']) for a in apps: warm_app(a['id'], a['short_name'], featured=True) # Categories categories = cached_cat.get_used() for c in categories: for page in pages: apps = cached_apps.get(c['short_name'], page, app.config['APPS_PER_PAGE']) for a in apps: warm_app(a['id'], a['short_name']) # Users cached_users.get_leaderboard(app.config['LEADERBOARD'], 'anonymous') cached_users.get_top() return True
def warm_cache(): '''Warm cache''' # Disable cache, so we can refresh the data in Redis os.environ['PYBOSSA_REDIS_CACHE_DISABLED'] = '1' # Cache 3 pages apps_cached = [] pages = range(1, 4) with app.app_context(): import pybossa.cache.apps as cached_apps import pybossa.cache.categories as cached_cat import pybossa.cache.users as cached_users import pybossa.stats as stats def warm_app(id, short_name): if id not in apps_cached: cached_apps.get_app(short_name) cached_apps.n_tasks(id) n_task_runs = cached_apps.n_task_runs(id) cached_apps.overall_progress(id) cached_apps.last_activity(id) cached_apps.n_completed_tasks(id) cached_apps.n_volunteers(id) if n_task_runs >= 1000: print "Getting stats for %s as it has %s" % (id, n_task_runs) stats.get_stats(id, app.config.get('GEO')) apps_cached.append(id) # Cache top projects cached_apps.get_featured_front_page() apps = cached_apps.get_top() for a in apps: warm_app(a['id'], a['short_name']) for page in pages: apps, count = cached_apps.get_featured('featured', page, app.config['APPS_PER_PAGE']) for a in apps: warm_app(a['id'], a['short_name']) # Categories categories = cached_cat.get_used() for c in categories: for page in pages: apps, count = cached_apps.get(c['short_name'], page, app.config['APPS_PER_PAGE']) for a in apps: warm_app(a['id'], a['short_name']) # Users cached_users.get_top()
def warm_cache(): '''Warm cache''' # Disable cache, so we can refresh the data in Redis os.environ['PYBOSSA_REDIS_CACHE_DISABLED'] = '1' # Cache 3 pages apps_cached = [] pages = range(1, 4) with app.app_context(): import pybossa.cache.projects as cached_apps import pybossa.cache.categories as cached_cat import pybossa.cache.users as cached_users import pybossa.cache.project_stats as stats def warm_app(id, short_name, featured=False): if id not in apps_cached: cached_apps.get_app(short_name) cached_apps.n_tasks(id) n_task_runs = cached_apps.n_task_runs(id) cached_apps.overall_progress(id) cached_apps.last_activity(id) cached_apps.n_completed_tasks(id) cached_apps.n_volunteers(id) if n_task_runs >= 1000 or featured: print "Getting stats for %s as it has %s task runs" % ( short_name, n_task_runs) stats.get_stats(id, app.config.get('GEO')) apps_cached.append(id) # Cache top projects apps = cached_apps.get_top() for a in apps: warm_app(a['id'], a['short_name']) for page in pages: apps = cached_apps.get_featured('featured', page, app.config['APPS_PER_PAGE']) for a in apps: warm_app(a['id'], a['short_name'], featured=True) # Categories categories = cached_cat.get_used() for c in categories: for page in pages: apps = cached_apps.get(c['short_name'], page, app.config['APPS_PER_PAGE']) for a in apps: warm_app(a['id'], a['short_name']) # Users cached_users.get_leaderboard(app.config['LEADERBOARD'], 'anonymous') cached_users.get_top()