def _show_public_profile(user, form): user_dict = cached_users.public_get_user_summary(user.name) projects_contributed = cached_users.public_projects_contributed_cached(user.id) projects_created = cached_users.public_published_projects_cached(user.id) can_update = False if (user.restrict is False and current_user.is_authenticated() and current_user.admin): draft_projects = cached_users.draft_projects(user.id) projects_created.extend(draft_projects) can_update = True if user.restrict is False: title = "%s · User Profile" % user_dict['fullname'] else: title = "User data is restricted" projects_contributed = [] projects_created = [] form = None response = dict(template='/account/public_profile.html', title=title, user=user_dict, projects=projects_contributed, projects_created=projects_created, form=form, can_update=can_update, input_form=False) 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 _show_public_profile(user, form): user_dict = cached_users.public_get_user_summary(user.name) projects_contributed = cached_users.public_projects_contributed_cached( user.id) projects_created = cached_users.public_published_projects_cached(user.id) can_update = False if (user.restrict is False and current_user.is_authenticated() and current_user.admin): draft_projects = cached_users.draft_projects(user.id) projects_created.extend(draft_projects) can_update = True if user.restrict is False: title = "%s · User Profile" % user_dict['fullname'] else: title = "User data is restricted" projects_contributed = [] projects_created = [] form = None response = dict(template='/account/public_profile.html', title=title, user=user_dict, projects=projects_contributed, projects_created=projects_created, form=form, can_update=can_update, input_form=False) return handle_content_type(response)
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)
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_public_get_user_summary_user_exists(self): """Test public CACHE USERS get_user_summary returns a dict with the user data if the user exists""" UserFactory.create(name='zidane') UserFactory.create(name='figo') zizou = cached_users.public_get_user_summary('zidane') assert type(zizou) is dict, type(zizou) assert zizou != None, zizou
def test_public_get_user_summary_user_exists(self): """Test public CACHE USERS get_user_summary returns a dict with the user data if the user exists""" UserFactory.create(name='zidane') UserFactory.create(name='figo') zizou = cached_users.public_get_user_summary('zidane') assert type(zizou) is dict, type(zizou) assert zizou != None, zizou
def test_public_get_user_summary_returns_fields(self): """Test CACHE USERS public_get_user_summary all the fields in the dict""" UserFactory.create(name='user') public_fields = ('name', 'info', 'fullname', 'created', 'rank', 'score') private_fields = ('id', 'api_key', 'admin', 'email_addr', 'total') user = cached_users.public_get_user_summary('user') for field in public_fields: assert field in list(user.keys()), field for field in private_fields: assert field not in list(user.keys()), field
def test_public_get_user_summary_returns_fields(self): """Test CACHE USERS public_get_user_summary all the fields in the dict""" UserFactory.create(name='user') public_fields = ('name', 'info', 'fullname', 'created', 'rank', 'score') private_fields = ('id', 'api_key', 'twitter_user_id', 'google_user_id', 'facebook_user_id', 'admin', 'email_addr', 'total') user = cached_users.public_get_user_summary('user') for field in public_fields: assert field in user.keys(), field for field in private_fields: assert field not in user.keys(), field
def _show_public_profile(user): user_dict = cached_users.public_get_user_summary(user.name) projects_contributed = cached_users.public_projects_contributed_cached(user.id) projects_created = cached_users.public_published_projects_cached(user.id) 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) return handle_content_type(response)
def _show_public_profile(user): user_dict = cached_users.public_get_user_summary(user.name) projects_contributed = cached_users.public_projects_contributed_cached(user.id) projects_created = cached_users.public_published_projects_cached(user.id) 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) return handle_content_type(response)
def add_metadata(name): """ Admin can save metadata for selected user Redirects to public profile page for selected user. """ user = user_repo.get_by_name(name=name) form = UserPrefMetadataForm(request.form) 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) 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') can_update = current_user.admin return render_template('/account/public_profile.html', title=title, user=user_dict, projects=projects_contributed, projects_created=projects_created, form=form, can_update=can_update, input_form=True) user_pref, metadata = get_user_pref_and_metadata(name, form) user.info['metadata'] = metadata user.user_pref = user_pref user_repo.update(user) cached_users.delete_user_pref_metadata(user.name) flash("Input saved successfully", "info") return redirect(url_for('account.profile', name=name))
def add_metadata(name): """ Admin can save metadata for selected user Redirects to public profile page for selected user. """ user = user_repo.get_by_name(name=name) form = UserPrefMetadataForm(request.form) 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) 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') can_update = current_user.admin return render_template('/account/public_profile.html', title=title, user=user_dict, projects=projects_contributed, projects_created=projects_created, form=form, can_update=can_update, input_form=True) user_pref, metadata = get_user_pref_and_metadata(name, form) user.info['metadata'] = metadata user.user_pref = user_pref user_repo.update(user) cached_users.delete_user_pref_metadata(user.name) flash("Input saved successfully", "info") return redirect(url_for('account.profile', name=name))
def test_public_get_user_summary_nousers(self): """Test public CACHE USERS get_user_summary returns None if no user exists with the name requested""" user = cached_users.public_get_user_summary('nouser') assert user is None, user
def test_public_get_user_summary_nousers(self): """Test public CACHE USERS get_user_summary returns None if no user exists with the name requested""" user = cached_users.public_get_user_summary('nouser') assert user is None, user