123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145 |
- # coding:utf-8
- import imp
- from operator import or_
- from ..base import base
- from ..models import Role, Resource, User
- from flask import render_template, request
- from flask_login import current_user
- from flask import jsonify
- from datetime import datetime
- from .. import db
- import uuid
- from sqlalchemy import desc
- from sqlalchemy import asc
- from sqlalchemy import or_
- @base.route('/securityJsp/base/Syrole.jsp', methods=['GET'])
- def index_role():
- return render_template('role/index.html')
- @base.route('/securityJsp/base/SyroleForm.jsp', methods=['GET'])
- def form_role():
- return render_template('role/form.html', id=request.args.get('id', ''))
- @base.route('/securityJsp/base/SyroleGrant.jsp', methods=['GET'])
- def grant_role_page():
- return render_template('role/grant.html', id=request.args.get('id', ''))
- @base.route('/base/syrole!doNotNeedSecurity_getRolesTree.action', methods=['POST'])
- def get_roles_tree():
- roles = Role.query.join(User, Role.users).filter(User.ID == current_user.ID).all()
- return jsonify([role.to_json() for role in roles])
- @base.route('/base/syrole!doNotNeedSecurity_getRoleByUserId.action', methods=['POST'])
- def get_roles_by_userId():
- roles = Role.query.join(User, Role.users).filter(User.ID == request.form.get('id')).all()
- return jsonify([role.to_json() for role in roles])
- @base.route('/system/role/authUser/cancelAll', methods=['PUT'])
- def grant_role():
- roleId = request.args.get('roleId')
- userIds = request.args.get('userIds')
- role = Role.query.get(roleId)
- idList = userIds.split(',')
- toCancelUsers = [User.query.get(uid) for uid in idList]
- role.users = [user2 for user2 in role.users.all() for user in toCancelUsers if user2.ID != user.ID ]
- db.session.add(role)
- return jsonify({'code': 200, 'msg': '取消成功'})
- @base.route('/system/role/list', methods=['GET'])
- def grid():
- filters = []
- if request.form.get('name'):
- filters.append(Role.NAME.like('%' + request.form.get('name') + '%'))
- order_by = []
- if request.form.get('sort'):
- if request.form.get('order') == 'asc':
- order_by.append(asc(getattr(Role,request.form.get('sort').upper())))
- elif request.form.get('order') == 'desc':
- order_by.append(desc(getattr(Role,request.form.get('sort').upper())))
- else:
- order_by.append(getattr(Role,request.form.get('sort').upper()))
- page = request.form.get('page', 1, type=int)
- rows = request.form.get('rows', 10, type=int)
- pagination = current_user.roles.filter(*filters).order_by(*order_by).paginate(
- page, per_page=rows, error_out=False)
- roles = pagination.items
- return jsonify({'rows': [role.to_json() for role in roles], 'total': pagination.total})
- @base.route('/system/role/<string:id>', methods=['GET'])
- def syrole_getById(id):
- role = Role.query.get(id)
- if role:
- return jsonify({'code': 200, 'msg': '操作成功', 'data': role.to_json()})
- else:
- return jsonify({'success': False, 'msg': 'error'})
- @base.route('/system/role', methods=['PUT'])
- def syrole_update():
- role = Role.query.get(request.json['roleId'])
- role.UPDATEDATETIME = datetime.now()
- role.NAME = request.json['roleName']
- role.DESCRIPTION = request.json['remark']
- role.SEQ = request.json['roleSort']
- db.session.add(role)
- return jsonify({'code': 200})
- @base.route('/system/role', methods=['POST'])
- def syrole_save():
- role = Role()
- role.ID = str(uuid.uuid4())
- role.NAME = request.json['roleName']
- if 'remark' in request.json: role.DESCRIPTION = request.json['remark']
- role.SEQ = request.json['roleSort']
- if 'menuIds' in request.json:
- res_list = [Resource.query.get(menuId) for menuId in request.json['menuIds']]
- role.resources = res_list
-
- # add current use to new role
- current_user.roles.append(role)
- db.session.add(role)
- return jsonify({'code': 200})
- @base.route('/system/role/<string:id>', methods=['DELETE'])
- def syrole_delete(id):
- role = Role.query.get(id)
- if role:
- db.session.delete(role)
- return jsonify({'code': 200})
- @base.route('/system/role/authUser/allocatedList', methods=['GET'])
- def allocatedList():
- page = request.args.get('pageNum', 1, type=int)
- rows = request.args.get('pageSize', 10, type=int)
- pagination = User.query.join(Role, User.roles).filter(Role.ID == request.args['roleId']).paginate(
- page, per_page=rows, error_out=False)
- users = pagination.items
- return jsonify({'rows': [user.to_json() for user in users], 'total': pagination.total})
- @base.route('/system/role/authUser/unallocatedList', methods=['GET'])
- def unallocatedList():
- page = request.args.get('pageNum', 1, type=int)
- rows = request.args.get('pageNum', 10, type=int)
- pagination = User.query.join(Role, User.roles).filter(or_(Role.ID != request.args['roleId'], Role.ID == None)).paginate(
- page, per_page=rows, error_out=False)
- users = pagination.items
- return jsonify({'rows': [user.to_json() for user in users], 'total': pagination.total})
|