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" )