Exemplo n.º 1
0
def users(user_id=None):
    """Manage users of PYBOSSA."""
    form = SearchForm(request.body)
    users = [
        user for user in user_repo.filter_by(admin=True)
        if user.id != current_user.id
    ]

    if request.method == 'POST' and form.user.data:
        query = form.user.data
        found = [
            user for user in user_repo.search_by_name(query)
            if user.id != current_user.id
        ]
        [ensure_authorized_to('update', found_user) for found_user in found]
        if not found:
            flash("<strong>Ooops!</strong> We didn't find a user "
                  "matching your query: <strong>%s</strong>" % form.user.data)
        response = dict(template='/admin/users.html',
                        found=found,
                        users=users,
                        title=gettext("Manage Admin Users"),
                        form=form)
        return handle_content_type(response)

    response = dict(template='/admin/users.html',
                    found=[],
                    users=users,
                    title=gettext("Manage Admin Users"),
                    form=form)
    return handle_content_type(response)
Exemplo n.º 2
0
def users(user_id=None):
    """Manage users of PyBossa"""
    try:
        form = SearchForm(request.form)
        users = [
            user for user in user_repo.filter_by(admin=True)
            if user.id != current_user.id
        ]

        if request.method == 'POST' and form.user.data:
            query = form.user.data
            found = [
                user for user in user_repo.search_by_name(query)
                if user.id != current_user.id
            ]
            require.user.update(found)
            if not found:
                flash("<strong>Ooops!</strong> We didn't find a user "
                      "matching your query: <strong>%s</strong>" %
                      form.user.data)
            return render_template('/admin/users.html',
                                   found=found,
                                   users=users,
                                   title=gettext("Manage Admin Users"),
                                   form=form)

        return render_template('/admin/users.html',
                               found=[],
                               users=users,
                               title=gettext("Manage Admin Users"),
                               form=form)
    except Exception as e:  # pragma: no cover
        current_app.logger.error(e)
        return abort(500)
Exemplo n.º 3
0
def subadminusers(user_id=None):
    """Manage subadminusers of PyBossa."""
    form = SearchForm(request.form)
    users = [
        user for user in user_repo.filter_by(subadmin=True)
        if user.id != current_user.id
    ]

    if request.method == 'POST' and form.user.data:
        query = form.user.data
        found = [
            user for user in user_repo.search_by_name(query)
            if user.id != current_user.id
        ]
        [ensure_authorized_to('update', found_user) for found_user in found]
        if not found:
            flash("<strong>Ooops!</strong> We didn't find a user "
                  "matching your query: <strong>%s</strong>" % form.user.data)
        return render_template('/admin/subadminusers.html',
                               found=found,
                               users=users,
                               title=gettext("Manage Subadmin Users"),
                               form=form)

    return render_template('/admin/subadminusers.html',
                           found=[],
                           users=users,
                           title=gettext("Manage Subadmin Users"),
                           form=form)
Exemplo n.º 4
0
def subadminusers():
    """Manage subadminusers of PyBossa."""
    form = SearchForm(request.form)
    users = [
        user for user in user_repo.filter_by(subadmin=True)
        if user.id != current_user.id
    ]

    if request.method == 'POST' and form.user.data:
        query = form.user.data
        found = [
            user for user in user_repo.search_by_name(query)
            if user.id != current_user.id
        ]
        [ensure_authorized_to('update', found_user) for found_user in found]
        if not found:
            markup = Markup('<strong>{}</strong> {} <strong>{}</strong>')
            flash(
                markup.format(
                    gettext('Ooops!'),
                    gettext("We didn't find a user matching your query:"),
                    form.user.data))
        return render_template('/admin/subadminusers.html',
                               found=found,
                               users=users,
                               title=gettext("Manage Subadmin Users"),
                               form=form)

    return render_template('/admin/subadminusers.html',
                           found=[],
                           users=users,
                           title=gettext("Manage Subadmin Users"),
                           form=form)
Exemplo n.º 5
0
def users(user_id=None):
    """Manage users of PyBossa."""
    form = SearchForm(request.form)
    users = [user for user in user_repo.filter_by(admin=True)
             if user.id != current_user.id]

    if request.method == 'POST' and form.user.data:
        query = form.user.data
        found = [user for user in user_repo.search_by_name(query)
                 if user.id != current_user.id]
        [ensure_authorized_to('update', found_user) for found_user in found]
        if not found:
            flash("<strong>Ooops!</strong> We didn't find a user "
                  "matching your query: <strong>%s</strong>" % form.user.data)
        return render_template('/admin/users.html', found=found, users=users,
                               title=gettext("Manage Admin Users"),
                               form=form)

    return render_template('/admin/users.html', found=[], users=users,
                           title=gettext("Manage Admin Users"), form=form)
Exemplo n.º 6
0
def users(user_id=None):
    """Manage users of PyBossa"""
    try:
        form = SearchForm(request.form)
        users = [user for user in user_repo.filter_by(admin=True) if user.id != current_user.id]

        if request.method == 'POST' and form.user.data:
            query = form.user.data
            found = [user for user in user_repo.search_by_name(query) if user.id != current_user.id]
            require.user.update(found)
            if not found:
                flash("<strong>Ooops!</strong> We didn't find a user "
                      "matching your query: <strong>%s</strong>" % form.user.data)
            return render_template('/admin/users.html', found=found, users=users,
                                   title=gettext("Manage Admin Users"),
                                   form=form)

        return render_template('/admin/users.html', found=[], users=users,
                               title=gettext("Manage Admin Users"), form=form)
    except Exception as e: # pragma: no cover
        current_app.logger.error(e)
        return abort(500)
Exemplo n.º 7
0
def users(user_id=None):
    """Manage users of PYBOSSA."""
    form = SearchForm(request.body)
    users = [user for user in user_repo.filter_by(admin=True)
             if user.id != current_user.id]

    if request.method == 'POST' and form.user.data:
        query = form.user.data
        found = [user for user in user_repo.search_by_name(query)
                 if user.id != current_user.id]
        [ensure_authorized_to('update', found_user) for found_user in found]
        if not found:
            markup = Markup('<strong>{}</strong> {} <strong>{}</strong>')
            flash(markup.format(gettext("Ooops!"),
                                gettext("We didn't find a user matching your query:"),
                                form.user.data))
        response = dict(template='/admin/users.html', found=found, users=users,
                        title=gettext("Manage Admin Users"),
                        form=form)
        return handle_content_type(response)

    response = dict(template='/admin/users.html', found=[], users=users,
                    title=gettext("Manage Admin Users"), form=form)
    return handle_content_type(response)
Exemplo n.º 8
0
def manageusers():
    """Enable/disable users of PyBossa."""
    found = []
    locs = langs = utypes = timezone = [('', '')]
    if app_settings.upref_mdata:
        locs = app_settings.upref_mdata.upref_locations()
        langs = app_settings.upref_mdata.upref_languages()
        utypes = app_settings.upref_mdata.mdata_user_types()
        timezone = app_settings.upref_mdata.mdata_timezones()

    args = request.args
    form = SearchForm(request.form)

    efilters = dict(enabled=True)
    dfilters = dict(enabled=False)

    if not current_user.admin:
        efilters.update(admin=False, subadmin=False)
        dfilters.update(admin=False, subadmin=False)

    users = [
        user for user in user_repo.filter_deleted_users(**efilters)
        if user.id != current_user.id
    ]
    disabledusers = [
        user for user in user_repo.filter_deleted_users(**dfilters)
        if user.id != current_user.id
    ]
    columns = user_repo.get_info_columns()

    if args.get('filter_by_field'):
        search_criteria = []
        params = {}
        smart_search_input = helper._get_field_filters(args['filter_by_field'])
        for field, _, value in smart_search_input:
            if field in columns:
                if field == 'languages' or field == 'locations':
                    search_criteria.append(
                        "user_pref -> '{}' @> :data".format(field))
                    params['data'] = '["{}"]'.format(value)
                elif field == 'additional_comments':
                    search_criteria.append(
                        "info::json -> 'metadata' ->> 'review' iLike :review")
                    params['review'] = '%{}%'.format(value)
                else:
                    search_criteria.append(
                        "info::json -> 'metadata' ->> '{}' iLike :info".format(
                            field))
                    params['info'] = value
        if search_criteria:
            criteria = ' AND '.join(search_criteria)
            found = user_repo.smart_search(current_user.admin, criteria,
                                           params)
            if not found:
                flash('No user found matching your query')

    if request.method == 'POST' and form.user.data:
        query = form.user.data
        found = [
            user for user in user_repo.search_by_name(query)
            if user.id != current_user.id
            and can_update_user_info(current_user, user)[0]
        ]

        if not found:
            flash('No user found matching your query: {}'.format(
                form.user.data))

    return render_template('/admin/manageusers.html',
                           found=found,
                           users=users,
                           disabledusers=disabledusers,
                           title=gettext("Enable/Disable Users"),
                           form=form,
                           filter_columns=columns,
                           filter_data=[],
                           locations=locs,
                           languages=langs,
                           user_types=utypes,
                           timezones=timezone)