Пример #1
0
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)
Пример #2
0
def add_metadata(name):
    """
    Admin can add metadata for selected user

    Redirects to public profile page for selected user.

    """
    user = user_repo.get_by_name(name=name)
    if not can_update_user_info(current_user, user):
        abort(403)
    form = MetadataForm(request.form)
    if not any(value for value in form.data.values()):
        user.info['metadata'] = {}
        user.user_pref = {}
    elif form.validate():
        metadata = dict(admin=current_user.name, time_stamp=time.ctime(),
                        user_type=form.user_type.data, start_time=form.start_time.data,
                        end_time=form.end_time.data, review=form.review.data,
                        timezone=form.timezone.data, profile_name=user.name)
        user.info['metadata'] = metadata
        user_pref = {}
        if form.languages.data:
            user_pref["languages"] = form.languages.data
        if form.locations.data:
            user_pref["locations"] = form.locations.data

        user.user_pref = user_pref
    else:
        projects_contributed = cached_users.projects_contributed_cached(user.id)
        projects_created = cached_users.published_projects_cached(user.id)
        metadata = cached_users.get_metadata(user.name)
        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, metadata=metadata,
                               projects=projects_contributed, form=form,
                               projects_created=projects_created,
                               input_form=True)
    user_repo.update(user)
    cached_users.delete_user_metadata(user.name)
    delete_memoized(get_user_preferences, user.id)
    flash("Input saved successfully", "info")
    return redirect(url_for('account.profile', name=name))