예제 #1
0
def add_role():
    """
    Add a role to the database
    """
    check_admin()

    add_role = True

    form = RoleForm()
    if form.validate_on_submit():
        role = Role(name=form.name.data,
                    description=form.description.data)

        try:
            # add role to the database
            db.session.add(role)
            db.session.commit()
            flash('You have successfully added a new role.')
        except:
            # in case role name already exists
            flash('Error: role name already exists.')

        # redirect to the roles page
        return redirect(url_for('admin.list_roles'))

    # load role template
    return render_template('admin/roles/role.html', add_role=add_role,
                           form=form, title='Add Role')
예제 #2
0
def edit_role(id):
    """
    Edit a role
    """
    check_admin()

    add_role = False

    role = Role.query.get_or_404(id)
    form = RoleForm(obj=role)
    if form.validate_on_submit():
#        role.name = form.name.data
#        role.description = form.description.data
#        db.session.add(role)
        form.populate_obj(role)
        db.session.commit()
        flash('You have successfully edited the role.')

        # redirect to the roles page
        return redirect(url_for('admin.list_roles'))

    #form.description.data = role.description
    #form.name.data = role.name
    return render_template('admin/roles/role.html', add_role=add_role,
                           form=form, title="Edit Role")
예제 #3
0
파일: views.py 프로젝트: dmaish/dream-team
def edit_role(id):
    """ edit a role """

    check_admin()
    add_role = False

    role = Role.query.get_or_404(id)
    # prepopulating the form using the above role query
    form = RoleForm(obj=role)

    # populating the database with info from the submitted form
    if form.validate_on_submit():
        role.name = form.name.data
        role.description = form.description.data
        db.session.add(role)
        db.session.commit()
        flash(' you have successfully edited the role ')

        # redirect to the roles page to view the changes
        return redirect(url_for('admin.list_roles'))
    form.description.data = role.description
    form.name.data = role.name
    return render_template('admin/roles/role.html',
                           add_role=add_role,
                           form=form,
                           title="Edit Role")
예제 #4
0
파일: views.py 프로젝트: gitaux/vial-mvc
def edit_role(id):
    """
    Edit a role.
    :param id:
    :return:
    """
    check_admin()
    role = Role.query.get_or_404(id)
    form = RoleForm(obj=role)
    if form.validate_on_submit():
        role.name = form.name.data
        role.description = form.description.data
        try:
            db.session.add(role)
            db.session.commit()
            flash('Successfully edited the role: "%s".' % str(role.name))
        except:
            db.session.rollback()
            flash('failed to edit the role: "%s".' % str(role.name))
        return redirect(url_for('admin.roles'))
    form.description.data = role.description
    form.name.data = role.name
    return render_template('admin/roles/edit_role.html',
                           title='Edit Role',
                           form=form)  # type: RoleForm
예제 #5
0
def role_edit(id=None):
    # 角色修改
    form = RoleForm()
    form.submit.label.text = u'修改'
    role = Role.query.get_or_404(id)
    is_flag = True
    if request.method == 'GET':
        auths = role.auths
        # get时进行赋值。应对无法模板中赋初值
        form.name.data = role.name
        form.auths.data = list(map(lambda v: int(v), auths.split(",")))
    if form.validate_on_submit():
        if role.name != form.name.data and Role.query.filter_by(
                name=form.name.data).first():
            is_flag = False
            flash(u'您输入的角色已存在', 'err')
        if is_flag == False:
            return render_template('admin/role_edit.html', form=form)
        role.name = form.name.data
        role.auths = ','.join(map(lambda v: str(v), form.auths.data))
        db.session.add(role)
        oplog = Oplog(user_id=session['user_id'],
                      ip=request.remote_addr,
                      reason=u'修改角色:%s' % role.name)
        db.session.add(oplog)
        db.session.commit()
        flash(u'角色修改成功', 'ok')
        return redirect(url_for('admin.role_list'))
    return render_template('admin/role_edit.html', form=form)
def edit_role(id):
    """
    Edit a role
    """
    check_admin()

    add_role = False

    role = Role.query.get_or_404(id)
    form = RoleForm(obj=role)
    if form.validate_on_submit():
        role.name = form.name.data
        role.description = form.description.data
        db.session.add(role)
        db.session.commit()
        flash('Cargo editado com sucesso.')

        # redirect to the roles page
        return redirect(url_for('admin.list_roles'))

    form.description.data = role.description
    form.name.data = role.name
    return render_template('admin/roles/role.html',
                           add_role=add_role,
                           form=form,
                           title="Editar Cargo")
def add_role():
    """
    Add a role to the database
    """
    check_admin()

    add_role = True

    form = RoleForm()
    if form.validate_on_submit():
        role = Role(name=form.name.data, description=form.description.data)

        try:
            # add role to the database
            db.session.add(role)
            db.session.commit()
            flash('Cargo editado com sucesso.')
        except:
            # in case role name already exists
            flash('Erro: nome do cargo ja existe.')

        # redirect to the roles page
        return redirect(url_for('admin.list_roles'))

    # load role template
    return render_template('admin/roles/role.html',
                           add_role=add_role,
                           form=form,
                           title='Adicionar Cargo')
예제 #8
0
def add_role():

    check_admin()
    add_role = True
    form = RoleForm()
    if form.validate_on_submit():
        role = Role(name=form.name.data, description=form.description.data)

        try:
            db.session.add(role)
            db.session.commit()
            flash('You have successfully added a new role.')
        except:
            flash('Role already exists.')
        return redirect(url_for('admin.list_roles'))
    return render_template('admin/roles/role.html', add_role=add_role, form=form, title='Add Role')
예제 #9
0
def role_add():
    form = RoleForm()
    if form.validate_on_submit():
        data = form.data
        role_num = Role.query.filter_by(name=data["role_name"]).count()
        if role_num == 1:
            flash("角色名称已经存在!", "err")
            return redirect(url_for("admin.role_add"))
        role = Role(
            name=data["role_name"],
            auths=','.join(map(lambda v: str(v), data["auths"])),
        )
        db.session.add(role)
        db.session.commit()
        flash("添加角色成功!", "ok")
        # return redirect(url_for("admin.role_add",id=id))
        return redirect(url_for("admin.role_list", page=1))
    return render_template("admin/role_add.html", form=form)
예제 #10
0
def role_edit(id=None):
    form = RoleForm()
    role = Role.query.get_or_404(id)
    if request.method == "GET":
        auths = role.auths
        form.auths.data = list(map(lambda v: int(v), auths.split(",")))
    if form.validate_on_submit():
        data = form.data
        role_num = Role.query.filter_by(name=data["role_name"]).count()
        if role.name != data["role_name"] and role_num == 1:
            flash("角色名称已经存在!", "err")
            return redirect(url_for("admin.role_edit", id=id))
        role.name = data["role_name"]
        role.auths = ','.join(map(lambda v: str(v), data["auths"])),
        db.session.add(role)
        db.session.commit()
        flash("修改角色成功!", "ok")
        #return redirect(url_for("admin.role_edit",id=id))
        return redirect(url_for("admin.role_list", page=1))
    return render_template("admin/role_edit.html", form=form, role=role)
예제 #11
0
파일: views.py 프로젝트: gitaux/vial-mvc
def add_role():
    """
    Add a role to the database.
    :return:
    """
    check_admin()
    form = RoleForm()
    if form.validate_on_submit():
        role = Role(name=form.name.data, description=form.description.data)
        try:
            db.session.add(role)
            db.session.commit()
            flash('Successfully added a new role: "%s".' % str(role.name))
        except:
            db.session.rollback()
            flash('Failed to add a new role: "%s".' % str(role.name))
        return redirect(url_for('admin.roles'))
    return render_template('admin/roles/add_role.html',
                           title='Add Role',
                           form=form)
예제 #12
0
def edit_role(id):
    check_admin()
    add_role = False

    role = Role.query.get_or_404(id)
    form = RoleForm(obj=role)
    if form.validate_on_submit():
        role = form.name.data
        description = form.description.data
        db.session.add(role)
        db.session.commit()
        flash('You have successfully edited a role')
        return redirect(url_for('admin.list_roles'))

    form.description.data = role.description
    form.name.data = role.name
    return render_template('admin/roles/role.html',
                           add_role=add_role,
                           form=form,
                           role=role,
                           title="Edit Role")
예제 #13
0
def edit_role(id):
    check_admin()
    add_role = False
    role = Role.query.get_or_404(id)
    form = RoleForm(obj=role)
    if form.validate_on_submit():
        role.name = form.name.data
        role.description = form.description.data
        try:
            db.session.add(role)
            db.session.commit()
            logger.info('role edited ')
            flash('You have successfully edited the role.')
            return redirect(url_for('admin.list_roles'))
        except Exception as e:
            logger.error('role cannot be edited')
            flash("cannot edit")
    form.description.data = role.description
    form.name.data = role.name
    return render_template('admin/roles/role.html',
                           add_role=add_role,
                           form=form,
                           title="Edit Role")
예제 #14
0
def role_add():
    # 角色添加
    form = RoleForm()
    is_flag = True
    if form.validate_on_submit():
        if Role.query.filter_by(name=form.name.data).first():
            is_flag = False
            flash(u'您输入的角色已存在', 'err')
        if is_flag == False:
            return render_template('admin/role_add.html', form=form)
        role = Role(
            name=form.name.data,
            # lambda v: str(v) 匿名函数,将v转换为字符串
            # map(f, [list])内置函数,接收一个函数 f 和一个 list,并通过把函数 f 依次作用在 list 的每个元素上,得到一个新的 list 并返回
            auths=','.join(map(lambda v: str(v), form.auths.data)))
        db.session.add(role)
        oplog = Oplog(user_id=session['user_id'],
                      ip=request.remote_addr,
                      reason=u'添加角色:%s' % form.name.data)
        db.session.add(oplog)
        db.session.commit()
        flash(u'角色添加成功', 'ok')
        return redirect(url_for('admin.role_add'))
    return render_template('admin/role_add.html', form=form)
예제 #15
0
def admin():
    role_form = RoleForm()
    users = User.query.all()
    usernames = [u.username for u in users]
    role_form.username.validators.append(
        AnyOf(usernames, message="Username not found."))
    if role_form.validate_on_submit():
        form = role_form
        user = User.query.filter(User.username == form.username.data).one()

        try:
            role = Role.query.filter(Role.name == form.role.data).one()
        except NoResultFound:
            role = Role(name=form.role.data)
            db.session.add(role)

        if form.action.data == "add":
            if role not in user.roles:
                user.roles.append(role)
                db.session.add(user)
        elif form.action.data == "remove":
            if role in user.roles:
                user.roles.remove(role)
                db.session.add(user)

        db.session.commit()
        return redirect(url_for("horti.admin"))

    group_form = GroupForm()
    if group_form.validate_on_submit():
        form = group_form
        name = form.name.data
        if form.action.data == "add":
            tweety.post_groups(name=name)
        elif form.action.data == "remove":
            tweety.delete_group(name)
        groups = cache(tweety.get_groups, force_refresh=True)
        return redirect(url_for("horti.admin"))

    # display groups
    have_groups = False
    while not have_groups:
        groups = cache(tweety.get_groups)
        if not isinstance(groups, Response):
            have_groups = True
            groups.sort()
        sleep(0.2)

    # display roles
    roles = {}
    for user in users:
        roles[user.username] = ", ".join(sorted([r.name for r in user.roles]))

    template_data = {
        "role_form": role_form,
        "users": users,
        "roles": roles,
        "groups": groups,
        "group_form": group_form
    }
    return render_template("admin.html",
                           title=make_title("Admin"),
                           **template_data)