resource.py 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145
  1. from ..base import base
  2. from ..models import Resource, Organization
  3. from ..models import Role
  4. from ..models import User
  5. from flask import g, jsonify
  6. from flask_login import current_user
  7. import json
  8. from ..models import ResourceType
  9. from flask import render_template, request
  10. from .. import db
  11. import uuid
  12. from datetime import datetime
  13. from sqlalchemy import desc
  14. from sqlalchemy import asc
  15. from flask_login import login_required
  16. @base.route('/base/syresource!doNotNeedSecurity_getMainMenu.action', methods=['POST'])
  17. @login_required
  18. def resource_grid():
  19. rs = Resource.query.join(Role, Resource.roles).join(User, Role.users).filter(User.ID == current_user.ID).all()
  20. return jsonify([r.to_menu_json() for r in rs])
  21. @base.route('/base/syresourcetype!doNotNeedSecurity_combobox.action', methods=['POST'])
  22. @login_required
  23. def resource_type_combox():
  24. rt = ResourceType.query.all()
  25. return jsonify([r.to_json() for r in rt])
  26. @base.route('/base/syresource!doNotNeedSecurity_getRoleResources.action', methods=['POST'])
  27. @login_required
  28. def get_role_resources():
  29. resources = Resource.query.join(Role, Resource.roles).filter(Role.ID == request.form.get('id')).all()
  30. return jsonify([res.to_json() for res in resources])
  31. @base.route('/base/syresource!doNotNeedSecurity_getResourcesTree.action', methods=['POST'])
  32. @login_required
  33. def get_resources_tree():
  34. return syresource_treeGrid()
  35. @base.route('/base/syresource!doNotNeedSecurity_getOrganizationResources.action', methods=['POST'])
  36. @login_required
  37. def get_organization_resources():
  38. resources = Resource.query.join(Organization, Resource.organizations).filter(Organization.ID == request.form.get('id')).all()
  39. return jsonify([res.to_json() for res in resources])
  40. @base.route('/system/menu/list', methods=['GET'])
  41. @login_required
  42. def syresource_treeGrid():
  43. filters = []
  44. if 'menuName' in request.args:
  45. filters.append(Resource.NAME.like('%' + request.args['menuName'] + '%'))
  46. order_by = []
  47. order_by.append(asc(getattr(Resource, 'SYRESOURCE_ID')))
  48. order_by.append(asc(getattr(Resource, 'SEQ')))
  49. res_list = Resource.query.filter(*filters).order_by(*order_by)
  50. return jsonify({"msg":"操作成功","code":200, "data": [org.to_json() for org in res_list]})
  51. @base.route('/base/syresource!doNotNeedSecurity_comboTree.action', methods=['POST'])
  52. @login_required
  53. def syresource_comboTree():
  54. res_list = Resource.query.all()
  55. return jsonify([org.to_json() for org in res_list])
  56. @base.route('/system/menu/<id>', methods=['GET'])
  57. @login_required
  58. def syresource_getById(id):
  59. res = Resource.query.get(id)
  60. if res:
  61. return jsonify({'code': 200, 'msg': '操作成功', 'data': res.to_json()})
  62. else:
  63. return jsonify({'success': False, 'msg': 'error'})
  64. @base.route('/system/menu', methods=['PUT'])
  65. @login_required
  66. def syresource_update():
  67. res = Resource.query.get(request.json['menuId'])
  68. res.UPDATEDATETIME = datetime.now()
  69. if 'icon' in request.json: res.ICONCLS = request.json['icon']
  70. if 'component' in request.json: res.URL = request.json['component']
  71. if 'path' in request.json: res.PATH = request.json['path']
  72. if 'menuName' in request.json: res.NAME = request.json['menuName']
  73. if 'orderNum' in request.json: res.SEQ = request.json['orderNum']
  74. if 'perms' in request.json: res.PERMS = request.json['perms']
  75. if 'menuType' in request.json: res.SYRESOURCETYPE_ID = '1' if request.json['menuType'] == 'F' else '0' if request.json['menuType'] == 'C' else '3'
  76. if 'parentId' in request.json: res.parent = Resource.query.get(request.json['parentId'])
  77. if 'status' in request.json: res.STATUS = request.json['status']
  78. db.session.add(res)
  79. return jsonify({'code': 200, 'msg': '操作成功'})
  80. @base.route('/system/menu', methods=['POST'])
  81. @login_required
  82. def syresource_save():
  83. res = Resource()
  84. res.ID = str(uuid.uuid4())
  85. if 'icon' in request.json: res.ICONCLS = request.json['icon']
  86. if 'component' in request.json: res.URL = request.json['component']
  87. if 'path' in request.json: res.PATH = request.json['path']
  88. if 'menuName' in request.json: res.NAME = request.json['menuName']
  89. if 'orderNum' in request.json: res.SEQ = request.json['orderNum']
  90. if 'perms' in request.json: res.PERMS = request.json['perms']
  91. if 'menuType' in request.json: res.SYRESOURCETYPE_ID = '1' if request.json['menuType'] == 'F' else '0' if request.json['menuType'] == 'F' else '3'
  92. if 'parentId' in request.json: res.parent = Resource.query.get(request.json['parentId'])
  93. if 'status' in request.json: res.STATUS = request.json['status']
  94. db.session.add(res)
  95. return jsonify({'code': 200, 'msg': '操作成功'})
  96. @base.route('/system/menu/<id>', methods=['DELETE'])
  97. @login_required
  98. def syresource_delete(id):
  99. res = Resource.query.get(id)
  100. if res:
  101. db.session.delete(res)
  102. return jsonify({'code': 200, 'msg': '操作成功'})
  103. @base.route('/system/menu/treeselect', methods=['GET'])
  104. @login_required
  105. def syresource_tree_select():
  106. resList = Resource.query.filter(Resource.SYRESOURCE_ID == None)
  107. return jsonify({'msg': '操作成功', 'code': 200, "data": [res.to_tree_select_json() for res in resList]})
  108. @base.route('/system/menu/roleMenuTreeselect/<roleId>', methods=['GET'])
  109. @login_required
  110. def syresource_role_tree_select(roleId):
  111. role = Role.query.get(roleId)
  112. resList = Resource.query.filter(Resource.SYRESOURCE_ID == None)
  113. return jsonify({'msg': '操作成功', 'code': 200, \
  114. "menus": [res.to_tree_select_json() for res in resList], \
  115. "checkedKeys": [res.ID for res in role.resources]})