示例#1
0
文件: views.py 项目: AKMFCJ/tms
def add_role():

    for index, breadcrumb in enumerate(session["breadcrumbs"]):
        if "添加角色" == breadcrumb["text"]:
            session["breadcrumbs"] = session["breadcrumbs"][: index + 1]
            break
    else:
        session["breadcrumbs"].append({"text": "添加角色", "url": url_for("auth.add_role")})

    if request.method == "POST":
        other_role = Role.query.filter_by(name=request.form["name"]).first()
        if other_role:
            flash(u"同名角色已存在", "danger")
        else:
            all_id = [str(menu_id) for menu_id in request.form.getlist("role_menu") if menu_id]

            query_sql = "SELECT DISTINCT  parent_id FROM tms_menu WHERE id IN(%s)" % ",".join(all_id)

            for row in db.engine.execute(query_sql):
                if row[0] != "None" and row[0] != None:
                    current_app.logger.info(row[0])
                    all_id.append(str(row[0]))

            role = Role()
            role.menu = ",".join(list(set(all_id)))
            role.name = request.form["name"]
            role.index_page = request.form["index_page"]

            db.session.add(role)
            db.session.commit()

            users = User.query.filter(User.id.in_(request.form.getlist("role_remember")))
            for user in users:
                user.role = role
                db.session.add(user)
            db.session.commit()
            return redirect(url_for("auth.role_page"))

    menus = SystemMenu.query.filter_by(activate=True).order_by(SystemMenu.order).all()
    users = User.query.all()

    return render_template(
        "admin/account/role_edit.html", role=None, menus=menus, users=users, current_page="auth.role_page"
    )