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 index(): """Return Global Statistics for the site.""" title = "Global Statistics" n_auth = site_stats.n_auth_users() n_anon = site_stats.n_anon_users() n_total_users = n_anon + n_auth n_published_projects = cached_projects.n_published() n_draft_projects = cached_projects.n_count('draft') n_total_projects = n_published_projects + n_draft_projects n_tasks = site_stats.n_tasks_site() n_task_runs = site_stats.n_task_runs_site() top5_projects_24_hours = site_stats.get_top5_projects_24_hours() top5_users_24_hours = site_stats.get_top5_users_24_hours() stats = dict(n_total_users=n_total_users, n_auth=n_auth, n_anon=n_anon, n_published_projects=n_published_projects, n_draft_projects=n_draft_projects, n_total_projects=n_total_projects, n_tasks=n_tasks, n_task_runs=n_task_runs) users = dict(label="User Statistics", values=[ dict(label='Anonymous', value=[0, n_anon]), dict(label='Authenticated', value=[0, n_auth]) ]) projects = dict(label="Projects Statistics", values=[ dict(label='Published', value=[0, n_published_projects]), dict(label='Draft', value=[0, n_draft_projects]) ]) tasks = dict(label="Task and Task Run Statistics", values=[ dict(label='Tasks', value=[0, n_tasks]), dict(label='Answers', value=[1, n_task_runs]) ]) response = dict(template='/stats/global.html', title=title, users=json.dumps(users), projects=json.dumps(projects), tasks=json.dumps(tasks), show_locs=False, top5_users_24_hours=top5_users_24_hours, top5_projects_24_hours=top5_projects_24_hours, stats=stats) return handle_content_type(response)
def _show_public_profile(user, form, can_update): if current_user.id == user.id: user_dict = cached_users.get_user_summary(user.name) else: user_dict = cached_users.public_get_user_summary(user.name) if current_user.admin: user_dict['email_addr'] = user.email_addr projects_contributed = cached_users.public_projects_contributed_cached( user.id) projects_created = cached_users.public_published_projects_cached(user.id) total_projects_contributed = '{} / {}'.format( cached_users.n_projects_contributed(user.id), n_published()) percentage_tasks_completed = user_dict['n_answers'] * 100 / ( n_total_tasks() or 1) if current_user.is_authenticated() and current_user.admin: draft_projects = cached_users.draft_projects(user.id) projects_created.extend(draft_projects) title = "%s · User Profile" % user_dict['fullname'] response = dict(template='/account/public_profile.html', title=title, user=user_dict, projects=projects_contributed, projects_created=projects_created, total_projects_contributed=total_projects_contributed, percentage_tasks_completed=percentage_tasks_completed, form=form, can_update=can_update, private_instance=bool(data_access_levels), upref_mdata_enabled=bool(app_settings.upref_mdata)) return handle_content_type(response)
def test_n_published_counts_published_projects(self): published_project = ProjectFactory.create_batch(2, published=True) ProjectFactory.create(published=False) number_of_published = cached_projects.n_published() assert number_of_published == 2, number_of_published
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_tasks=stats.n_total_tasks_site(), n_task_runs=stats.n_task_runs_site(), n_pending_tasks=n_pending_tasks, n_results=stats.n_results_site(), 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 index(): """Return Global Statistics for the site.""" title = "Global Statistics" n_auth = site_stats.n_auth_users() n_anon = site_stats.n_anon_users() n_total_users = n_anon + n_auth n_published_projects = cached_projects.n_published() n_draft_projects = cached_projects.n_count('draft') n_total_projects = n_published_projects + n_draft_projects n_tasks = site_stats.n_tasks_site() n_task_runs = site_stats.n_task_runs_site() top5_projects_24_hours = site_stats.get_top5_projects_24_hours() top5_users_24_hours = site_stats.get_top5_users_24_hours() locs = site_stats.get_locs() show_locs = False if len(locs) > 0: show_locs = True stats = dict(n_total_users=n_total_users, n_auth=n_auth, n_anon=n_anon, n_published_projects=n_published_projects, n_draft_projects=n_draft_projects, n_total_projects=n_total_projects, n_tasks=n_tasks, n_task_runs=n_task_runs) users = dict(label="User Statistics", values=[ dict(label='Anonymous', value=[0, n_anon]), dict(label='Authenticated', value=[0, n_auth])]) projects = dict(label="Projects Statistics", values=[ dict(label='Published', value=[0, n_published_projects]), dict(label='Draft', value=[0, n_draft_projects])]) tasks = dict(label="Task and Task Run Statistics", values=[ dict(label='Tasks', value=[0, n_tasks]), dict(label='Answers', value=[1, n_task_runs])]) return render_template('/stats/global.html', title=title, users=json.dumps(users), projects=json.dumps(projects), tasks=json.dumps(tasks), locs=json.dumps(locs), show_locs=show_locs, top5_users_24_hours=top5_users_24_hours, top5_projects_24_hours=top5_projects_24_hours, stats=stats)
def index(): """Return Global Statistics for the site.""" title = "Statistics" description = """Statistical analysis of contributions made via the LibCrowds crowdsourcing platform.""" # User stats n_anon = extra_stats.n_anon_users() n_auth = site_stats.n_auth_users() top_5_users_1_week = extra_stats.get_top_n_users_k_days(5, 7) n_tr_top_10_percent = extra_stats.get_top_n_percent(10) users_daily = extra_stats.get_users_daily() leaderboard = cached_users.get_leaderboard(10) n_avg_days_active = extra_stats.n_avg_days_active() # Task stats n_tasks = site_stats.n_tasks_site() n_task_runs = site_stats.n_task_runs_site() n_auth_task_runs = extra_stats.n_auth_task_runs_site() n_tasks_completed = extra_stats.n_tasks_completed() task_runs_daily = extra_stats.get_task_runs_daily() dow = extra_stats.get_dow() hourly_activity = extra_stats.site_hourly_activity() # Project stats n_published_projects = cached_projects.n_published() top_5_pr_1_week = extra_stats.get_top_n_projects_k_days(5, 7) # Location stats locs = extra_stats.get_locations() n_continents = extra_stats.n_continents() n_cities = extra_stats.n_cities() n_countries = extra_stats.n_countries() top_countries = extra_stats.get_top_n_countries() stats = dict(n_auth=n_auth, n_anon=n_anon, n_published_projects=n_published_projects, n_tasks=n_tasks, n_task_runs=n_task_runs, n_auth_task_runs=n_auth_task_runs, n_tasks_completed=n_tasks_completed, n_countries=n_countries, n_cities=n_cities, n_continents=n_continents, n_avg_days_active=n_avg_days_active, n_tr_top_10_percent=n_tr_top_10_percent) return render_template('/stats.html', title=title, description=description, stats=json.dumps(stats), locs=json.dumps(locs), users_daily=json.dumps(users_daily), task_runs_daily=json.dumps(task_runs_daily), top_countries=json.dumps(top_countries), top_5_pr_1_week=json.dumps(top_5_pr_1_week), top_5_users_1_week=json.dumps(top_5_users_1_week), hourly_activity=json.dumps(hourly_activity), dow=json.dumps(dow), leaderboard=json.dumps(leaderboard))
def add_metadata(name): """ Admin can save metadata for selected user. Regular user can save their own metadata. Redirects to public profile page for selected user. """ user = user_repo.get_by_name(name=name) (can_update, disabled_fields) = can_update_user_info(current_user, user) if not can_update: abort(403) form_data = get_form_data(request, user, disabled_fields) form = UserPrefMetadataForm(form_data, can_update=(can_update, disabled_fields)) form.set_upref_mdata_choices() if not form.validate(): if current_user.id == user.id: user_dict = cached_users.get_user_summary(user.name) else: user_dict = cached_users.public_get_user_summary(user.name) projects_contributed = cached_users.projects_contributed_cached( user.id) projects_created = cached_users.published_projects_cached(user.id) total_projects_contributed = '{} / {}'.format( cached_users.n_projects_contributed(user.id), n_published()) percentage_tasks_completed = user_dict['n_answers'] * 100 / ( n_total_tasks() or 1) if current_user.is_authenticated and current_user.admin: draft_projects = cached_users.draft_projects(user.id) projects_created.extend(draft_projects) title = "%s · User Profile" % user.name flash("Please fix the errors", 'message') return render_template( '/account/public_profile.html', title=title, user=user, projects=projects_contributed, projects_created=projects_created, total_projects_contributed=total_projects_contributed, percentage_tasks_completed=percentage_tasks_completed, form=form, input_form=True, can_update=can_update, upref_mdata_enabled=bool(app_settings.upref_mdata)) user_pref, metadata = get_user_pref_and_metadata(name, form) user.info['metadata'] = metadata ensure_data_access_assignment_from_form(user.info, form) user.user_pref = user_pref user_repo.update(user) cached_users.delete_user_pref_metadata(user.name) cached_users.delete_user_access_levels_by_id(user.id) delete_memoized(get_user_preferences, user.id) flash("Input saved successfully", "info") return redirect(url_for('account.profile', name=name))
def test_n_published_counts_projects_with_presenter_tasks_and_not_hidden(self): published_project = ProjectFactory.create() TaskFactory.create(project=published_project) hidden_project = ProjectFactory.create(hidden=1) TaskFactory.create(project=hidden_project) project_without_tasks = ProjectFactory.create() project_without_presenter = ProjectFactory.create(info={}) TaskFactory.create(project=project_without_presenter) number_of_published = cached_projects.n_published() assert number_of_published == 1, number_of_published
def _show_public_profile(user): user_dict = cached_users.public_get_user_summary(user.name) md = cached_users.get_metadata(user.name) form = MetadataForm(**md) projects_contributed = cached_users.projects_contributed_cached(user.id) projects_created = cached_users.published_projects_cached(user.id) total_projects_contributed = '{} / {}'.format(cached_users.n_projects_contributed(user.id), n_published()) percentage_tasks_completed = user_dict['n_answers'] * 100 / (n_total_tasks() or 1) if current_user.is_authenticated() and current_user.admin: draft_projects = cached_users.draft_projects(user.id) projects_created.extend(draft_projects) title = "%s · User Profile" % user_dict['fullname'] response = dict(template='/account/public_profile.html', title=title, user=user_dict, projects=projects_contributed, form=form, projects_created=projects_created, metadata=md, can_update=can_update_user_info(current_user, user), total_projects_contributed=total_projects_contributed, percentage_tasks_completed=percentage_tasks_completed) return handle_content_type(response)