''wip(semantic):调整序列化返回结果
This commit is contained in:
@@ -1,25 +1,28 @@
|
|||||||
from flask_restful import Api
|
from flask_restful import Api
|
||||||
|
|
||||||
from .department import Departments, Department, DeptEnable
|
from .department import DepartmentsResource, DepartmentResource, DeptEnableResource
|
||||||
from .rights import RightRights, RightPower, RightPowerEnable, AdminConfigs, AdminMenu
|
from .rights import (
|
||||||
from .roles import RoleRoles, RoleRole, RoleEnable, RolePower
|
RightRightsResource, RightPowerResource, RightPowerEnableResource, AdminConfigsResource,
|
||||||
|
AdminMenuResource
|
||||||
|
)
|
||||||
|
from .roles import RoleRolesResource, RoleRoleResource, RoleEnableResource, RolePowerResource
|
||||||
|
|
||||||
|
|
||||||
def register_rights_api(api_bp):
|
def register_rights_api(api_bp):
|
||||||
dept_api = Api(api_bp, prefix='/dept')
|
dept_api = Api(api_bp, prefix='/dept')
|
||||||
dept_api.add_resource(Departments, '/departments')
|
dept_api.add_resource(DepartmentsResource, '/departments')
|
||||||
dept_api.add_resource(Department, '/department/<int:dept_id>')
|
dept_api.add_resource(DepartmentResource, '/department/<int:dept_id>')
|
||||||
dept_api.add_resource(DeptEnable, '/department/<int:dept_id>/status')
|
dept_api.add_resource(DeptEnableResource, '/department/<int:dept_id>/status')
|
||||||
|
|
||||||
rights_api = Api(api_bp, prefix='/rights')
|
rights_api = Api(api_bp, prefix='/rights')
|
||||||
rights_api.add_resource(RightRights, '/rights')
|
rights_api.add_resource(RightRightsResource, '/rights')
|
||||||
rights_api.add_resource(RightPower, '/power/<int:power_id>')
|
rights_api.add_resource(RightPowerResource, '/power/<int:power_id>')
|
||||||
rights_api.add_resource(RightPowerEnable, '/power/<int:right_id>/status')
|
rights_api.add_resource(RightPowerEnableResource, '/power/<int:right_id>/status')
|
||||||
rights_api.add_resource(AdminConfigs, '/configs')
|
rights_api.add_resource(AdminConfigsResource, '/configs')
|
||||||
rights_api.add_resource(AdminMenu, '/menu')
|
rights_api.add_resource(AdminMenuResource, '/menu')
|
||||||
|
|
||||||
role_api = Api(api_bp, prefix='/roles')
|
role_api = Api(api_bp, prefix='/roles')
|
||||||
role_api.add_resource(RoleRoles, '/roles')
|
role_api.add_resource(RoleRolesResource, '/roles')
|
||||||
role_api.add_resource(RoleRole, '/role/<int:role_id>')
|
role_api.add_resource(RoleRoleResource, '/role/<int:role_id>')
|
||||||
role_api.add_resource(RoleEnable, '/role/<int:role_id>/status')
|
role_api.add_resource(RoleEnableResource, '/role/<int:role_id>/status')
|
||||||
role_api.add_resource(RolePower, '/role_power/<int:role_id>')
|
role_api.add_resource(RolePowerResource, '/role_power/<int:role_id>')
|
||||||
|
|||||||
@@ -2,14 +2,13 @@ from flask import jsonify
|
|||||||
from flask_restful import Resource
|
from flask_restful import Resource
|
||||||
from flask_restful import marshal, reqparse
|
from flask_restful import marshal, reqparse
|
||||||
|
|
||||||
from applications.common.serialization import dept_fields
|
|
||||||
from applications.common.utils.http import success_api, fail_api
|
from applications.common.utils.http import success_api, fail_api
|
||||||
from applications.common.utils.rights import authorize
|
from applications.common.utils.rights import authorize
|
||||||
from applications.extensions import db
|
from applications.extensions import db
|
||||||
from applications.models import CompanyDepartment, CompanyUser
|
from applications.models import CompanyDepartment, CompanyUser
|
||||||
|
|
||||||
|
|
||||||
class Departments(Resource):
|
class DepartmentsResource(Resource):
|
||||||
|
|
||||||
@authorize("admin:dept:main", log=True)
|
@authorize("admin:dept:main", log=True)
|
||||||
def get(self):
|
def get(self):
|
||||||
@@ -17,7 +16,7 @@ class Departments(Resource):
|
|||||||
# TODO dtree 需要返回状态信息
|
# TODO dtree 需要返回状态信息
|
||||||
res = {
|
res = {
|
||||||
"status": {"code": 200, "message": "默认"},
|
"status": {"code": 200, "message": "默认"},
|
||||||
"data": marshal(dept_data, dept_fields)
|
"data": marshal(dept_data, CompanyDepartment.fields())
|
||||||
}
|
}
|
||||||
print(dept_data)
|
print(dept_data)
|
||||||
return jsonify(res)
|
return jsonify(res)
|
||||||
@@ -52,7 +51,7 @@ class Departments(Resource):
|
|||||||
return success_api(message="成功")
|
return success_api(message="成功")
|
||||||
|
|
||||||
|
|
||||||
class Department(Resource):
|
class DepartmentResource(Resource):
|
||||||
@authorize("admin:dept:edit", log=True)
|
@authorize("admin:dept:edit", log=True)
|
||||||
def get(self, dept_id):
|
def get(self, dept_id):
|
||||||
dept = CompanyDepartment.query.filter_by(id=dept_id).first()
|
dept = CompanyDepartment.query.filter_by(id=dept_id).first()
|
||||||
@@ -106,7 +105,7 @@ class Department(Resource):
|
|||||||
return fail_api(message="删除失败")
|
return fail_api(message="删除失败")
|
||||||
|
|
||||||
|
|
||||||
class DeptEnable(Resource):
|
class DeptEnableResource(Resource):
|
||||||
@authorize("admin:dept:edit", log=True)
|
@authorize("admin:dept:edit", log=True)
|
||||||
def put(self, dept_id):
|
def put(self, dept_id):
|
||||||
d = CompanyDepartment.query.get(dept_id)
|
d = CompanyDepartment.query.get(dept_id)
|
||||||
|
|||||||
@@ -5,7 +5,6 @@ from flask import request, jsonify, current_app
|
|||||||
from flask_login import current_user, login_required
|
from flask_login import current_user, login_required
|
||||||
from flask_restful import Resource, reqparse, marshal
|
from flask_restful import Resource, reqparse, marshal
|
||||||
|
|
||||||
from applications.common.serialization import power2_fields, power_fields
|
|
||||||
from applications.common.utils.http import success_api, fail_api
|
from applications.common.utils.http import success_api, fail_api
|
||||||
from applications.common.utils.rights import authorize
|
from applications.common.utils.rights import authorize
|
||||||
from applications.extensions import db
|
from applications.extensions import db
|
||||||
@@ -101,7 +100,7 @@ def make_menu_tree():
|
|||||||
if p.type == 0 or p.type == 1:
|
if p.type == 0 or p.type == 1:
|
||||||
powers.append(p)
|
powers.append(p)
|
||||||
|
|
||||||
power_dict = marshal(powers, power2_fields) # 生成可序列化对象
|
power_dict = marshal(powers, RightsPower.fields2()) # 生成可序列化对象
|
||||||
power_dict.sort(key=lambda x: x['id'], reverse=True)
|
power_dict.sort(key=lambda x: x['id'], reverse=True)
|
||||||
|
|
||||||
menu_dict = OrderedDict()
|
menu_dict = OrderedDict()
|
||||||
@@ -153,13 +152,13 @@ parser_power.add_argument('powerUrl', type=str, dest='power_url')
|
|||||||
parser_power.add_argument('sort', type=int, dest='sort')
|
parser_power.add_argument('sort', type=int, dest='sort')
|
||||||
|
|
||||||
|
|
||||||
class RightRights(Resource):
|
class RightRightsResource(Resource):
|
||||||
@authorize("admin:power:main", log=True)
|
@authorize("admin:power:main", log=True)
|
||||||
def get(self):
|
def get(self):
|
||||||
"""获取选择父节点"""
|
"""获取选择父节点"""
|
||||||
|
|
||||||
power = RightsPower.query.all()
|
power = RightsPower.query.all()
|
||||||
power_data = marshal(power, power_fields)
|
power_data = marshal(power, RightsPower.fields())
|
||||||
power_data.append({"powerId": 0, "powerName": "顶级权限", "parentId": -1})
|
power_data.append({"powerId": 0, "powerName": "顶级权限", "parentId": -1})
|
||||||
res = {
|
res = {
|
||||||
"status": {"code": 200, "message": "默认"},
|
"status": {"code": 200, "message": "默认"},
|
||||||
@@ -175,7 +174,7 @@ class RightRights(Resource):
|
|||||||
return success_api(message="批量删除成功")
|
return success_api(message="批量删除成功")
|
||||||
|
|
||||||
|
|
||||||
class RightPower(Resource):
|
class RightPowerResource(Resource):
|
||||||
|
|
||||||
@authorize("admin:power:add", log=True)
|
@authorize("admin:power:add", log=True)
|
||||||
def post(self, power_id):
|
def post(self, power_id):
|
||||||
@@ -241,7 +240,7 @@ class RightPower(Resource):
|
|||||||
return success_api(message="更新权限成功")
|
return success_api(message="更新权限成功")
|
||||||
|
|
||||||
|
|
||||||
class RightPowerEnable(Resource):
|
class RightPowerEnableResource(Resource):
|
||||||
@authorize("admin:power:edit", log=True)
|
@authorize("admin:power:edit", log=True)
|
||||||
def put(self, right_id):
|
def put(self, right_id):
|
||||||
|
|
||||||
@@ -255,13 +254,13 @@ class RightPowerEnable(Resource):
|
|||||||
return fail_api(message="出错啦")
|
return fail_api(message="出错啦")
|
||||||
|
|
||||||
|
|
||||||
class AdminConfigs(Resource):
|
class AdminConfigsResource(Resource):
|
||||||
@login_required
|
@login_required
|
||||||
def get(self):
|
def get(self):
|
||||||
return get_render_config()
|
return get_render_config()
|
||||||
|
|
||||||
|
|
||||||
class AdminMenu(Resource):
|
class AdminMenuResource(Resource):
|
||||||
@login_required
|
@login_required
|
||||||
def get(self):
|
def get(self):
|
||||||
menu_tree = make_menu_tree()
|
menu_tree = make_menu_tree()
|
||||||
|
|||||||
@@ -1,8 +1,6 @@
|
|||||||
from flask import jsonify
|
|
||||||
from flask_login import login_required
|
from flask_login import login_required
|
||||||
from flask_restful import Resource, reqparse, marshal
|
from flask_restful import Resource, reqparse, marshal
|
||||||
|
|
||||||
from applications.common.serialization import power_fields
|
|
||||||
from applications.common.utils.http import table_api, success_api, fail_api
|
from applications.common.utils.http import table_api, success_api, fail_api
|
||||||
from applications.common.utils.rights import authorize
|
from applications.common.utils.rights import authorize
|
||||||
from applications.extensions import db
|
from applications.extensions import db
|
||||||
@@ -37,7 +35,7 @@ def batch_remove_role(role_ids):
|
|||||||
remove_role(role_id)
|
remove_role(role_id)
|
||||||
|
|
||||||
|
|
||||||
class RoleRoles(Resource):
|
class RoleRolesResource(Resource):
|
||||||
# 表格数据
|
# 表格数据
|
||||||
@authorize("admin:role:main", log=True)
|
@authorize("admin:role:main", log=True)
|
||||||
def get(self):
|
def get(self):
|
||||||
@@ -61,7 +59,7 @@ class RoleRoles(Resource):
|
|||||||
'roleName': item.name,
|
'roleName': item.name,
|
||||||
'roleCode': item.code,
|
'roleCode': item.code,
|
||||||
'enable': item.enable,
|
'enable': item.enable,
|
||||||
'remark': item.remark,
|
'comment': item.comment,
|
||||||
'details': item.details,
|
'details': item.details,
|
||||||
'sort': item.sort,
|
'sort': item.sort,
|
||||||
'create_at': str(item.create_at), } for item in paginate.items],
|
'create_at': str(item.create_at), } for item in paginate.items],
|
||||||
@@ -80,7 +78,7 @@ class RoleRoles(Resource):
|
|||||||
return success_api(message="批量删除成功")
|
return success_api(message="批量删除成功")
|
||||||
|
|
||||||
|
|
||||||
class RoleRole(Resource):
|
class RoleRoleResource(Resource):
|
||||||
|
|
||||||
@authorize("admin:role:add", log=True)
|
@authorize("admin:role:add", log=True)
|
||||||
def post(self, role_id):
|
def post(self, role_id):
|
||||||
@@ -132,7 +130,7 @@ class RoleRole(Resource):
|
|||||||
return success_api(message="更新角色成功")
|
return success_api(message="更新角色成功")
|
||||||
|
|
||||||
|
|
||||||
class RoleEnable(Resource):
|
class RoleEnableResource(Resource):
|
||||||
"""启用用户"""
|
"""启用用户"""
|
||||||
|
|
||||||
@authorize("admin:role:edit", log=True)
|
@authorize("admin:role:edit", log=True)
|
||||||
@@ -147,7 +145,7 @@ class RoleEnable(Resource):
|
|||||||
return success_api(message=message)
|
return success_api(message=message)
|
||||||
|
|
||||||
|
|
||||||
class RolePower(Resource):
|
class RolePowerResource(Resource):
|
||||||
|
|
||||||
@authorize("admin:role:main", log=True)
|
@authorize("admin:role:main", log=True)
|
||||||
def get(self, role_id):
|
def get(self, role_id):
|
||||||
@@ -156,7 +154,7 @@ class RolePower(Resource):
|
|||||||
# 获取权限列表的 id
|
# 获取权限列表的 id
|
||||||
check_powers_list = [rp.id for rp in role.power]
|
check_powers_list = [rp.id for rp in role.power]
|
||||||
powers = RightsPower.query.all() # 获取所有的权限
|
powers = RightsPower.query.all() # 获取所有的权限
|
||||||
powers = marshal(powers, power_fields)
|
powers = marshal(powers, RightsRole.fields())
|
||||||
for i in powers:
|
for i in powers:
|
||||||
if int(i.get("powerId")) in check_powers_list:
|
if int(i.get("powerId")) in check_powers_list:
|
||||||
i["checkArr"] = "1"
|
i["checkArr"] = "1"
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
from flask_restful import Api
|
from flask_restful import Api
|
||||||
|
|
||||||
from .file import FilePhotos, FileTable
|
from .file import FilePhotosResource, FilePhotoResource
|
||||||
from .passport import Login
|
from .passport import LoginResource
|
||||||
|
|
||||||
|
|
||||||
def register_system_api(api_bp):
|
def register_system_api(api_bp):
|
||||||
sys_api = Api(api_bp)
|
sys_api = Api(api_bp)
|
||||||
|
|
||||||
sys_api.add_resource(FilePhotos, '/file/photos')
|
sys_api.add_resource(FilePhotosResource, '/file/photos')
|
||||||
sys_api.add_resource(FileTable, '/file/photo/<int:photo_id>')
|
sys_api.add_resource(FilePhotoResource, '/file/photo/<int:photo_id>')
|
||||||
sys_api.add_resource(Login, '/passport/login')
|
sys_api.add_resource(LoginResource, '/passport/login')
|
||||||
|
|||||||
@@ -4,7 +4,6 @@ from flask import request, jsonify, current_app
|
|||||||
from flask_restful import Resource, marshal
|
from flask_restful import Resource, marshal
|
||||||
from sqlalchemy import desc
|
from sqlalchemy import desc
|
||||||
|
|
||||||
from applications.common.serialization import photo_fields
|
|
||||||
from applications.common.utils.http import fail_api, success_api, table_api
|
from applications.common.utils.http import fail_api, success_api, table_api
|
||||||
from applications.common.utils.rights import authorize
|
from applications.common.utils.rights import authorize
|
||||||
from applications.common.utils.upload import upload_one, delete_photo_by_id
|
from applications.common.utils.upload import upload_one, delete_photo_by_id
|
||||||
@@ -12,15 +11,17 @@ from applications.extensions import db
|
|||||||
from applications.models import FilePhoto
|
from applications.models import FilePhoto
|
||||||
|
|
||||||
|
|
||||||
class FilePhotos(Resource):
|
class FilePhotosResource(Resource):
|
||||||
|
|
||||||
@authorize("admin:file:main", log=True)
|
@authorize("admin:file:main", log=True)
|
||||||
def get(self):
|
def get(self):
|
||||||
page = request.args.get('page', type=int)
|
page = request.args.get('page', type=int)
|
||||||
limit = request.args.get('limit', type=int)
|
limit = request.args.get('limit', type=int)
|
||||||
photo_paginate = FilePhoto.query.order_by(desc(FilePhoto.create_at)).paginate(page=page, per_page=limit,
|
photo_paginate = FilePhoto.query.order_by(desc(FilePhoto.create_at)
|
||||||
error_out=False)
|
).paginate(page=page,
|
||||||
data = marshal(photo_paginate.items, photo_fields)
|
per_page=limit,
|
||||||
|
error_out=False)
|
||||||
|
data = marshal(photo_paginate.items, FilePhoto.fields())
|
||||||
return table_api(result={'items': data,
|
return table_api(result={'items': data,
|
||||||
'total': photo_paginate.total, },
|
'total': photo_paginate.total, },
|
||||||
code=0)
|
code=0)
|
||||||
@@ -33,7 +34,7 @@ class FilePhotos(Resource):
|
|||||||
file_url = upload_one(photo=photo, mime=mime)
|
file_url = upload_one(photo=photo, mime=mime)
|
||||||
|
|
||||||
res = {
|
res = {
|
||||||
"msg": "上传成功",
|
"message": "上传成功",
|
||||||
"code": 0,
|
"code": 0,
|
||||||
"success": True,
|
"success": True,
|
||||||
"data":
|
"data":
|
||||||
@@ -54,18 +55,18 @@ class FilePhotos(Resource):
|
|||||||
photo = FilePhoto.query.filter(FilePhoto.id.in_(ids)).delete(synchronize_session=False)
|
photo = FilePhoto.query.filter(FilePhoto.id.in_(ids)).delete(synchronize_session=False)
|
||||||
db.session.commit()
|
db.session.commit()
|
||||||
if photo:
|
if photo:
|
||||||
return success_api(msg="删除成功")
|
return success_api(message="删除成功")
|
||||||
else:
|
else:
|
||||||
return fail_api(msg="删除失败")
|
return fail_api(message="删除失败")
|
||||||
|
|
||||||
|
|
||||||
class FileTable(Resource):
|
class FilePhotoResource(Resource):
|
||||||
"""图片数据"""
|
"""图片数据"""
|
||||||
|
|
||||||
@authorize("admin:file:delete", log=True)
|
@authorize("admin:file:delete", log=True)
|
||||||
def delete(self, photo_id):
|
def delete(self, photo_id):
|
||||||
res = delete_photo_by_id(photo_id)
|
res = delete_photo_by_id(photo_id)
|
||||||
if res:
|
if res:
|
||||||
return success_api(msg="删除成功")
|
return success_api(message="删除成功")
|
||||||
else:
|
else:
|
||||||
return fail_api(msg="删除失败")
|
return fail_api(message="删除失败")
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ from applications.common.utils.rights import record_logging
|
|||||||
from applications.models import CompanyUser
|
from applications.models import CompanyUser
|
||||||
|
|
||||||
|
|
||||||
class Login(Resource):
|
class LoginResource(Resource):
|
||||||
login_req = reqparse.RequestParser(bundle_errors=True)
|
login_req = reqparse.RequestParser(bundle_errors=True)
|
||||||
login_req.add_argument('username', type=str, help='请输入用户名', required=True)
|
login_req.add_argument('username', type=str, help='请输入用户名', required=True)
|
||||||
login_req.add_argument('password', type=str, help='请输入密码', required=True)
|
login_req.add_argument('password', type=str, help='请输入密码', required=True)
|
||||||
|
|||||||
@@ -1,16 +1,16 @@
|
|||||||
from flask_restful import Api
|
from flask_restful import Api
|
||||||
|
|
||||||
from .profile import UserStatus, UserAvatar, UserInfo, UserPassword
|
from .profile import UserStatusResource, UserAvatarResource, UserInfoResource, UserPasswordResource
|
||||||
from .user import UserUsers, UserUser, UserRole
|
from .user import UserUsersResource, UserUserResource, UserRoleResource
|
||||||
|
|
||||||
|
|
||||||
def register_users_api(api_bp):
|
def register_users_api(api_bp):
|
||||||
users_api = Api(api_bp, prefix='/users')
|
users_api = Api(api_bp, prefix='/users')
|
||||||
|
|
||||||
users_api.add_resource(UserInfo, '/user/<int:user_id>/info')
|
users_api.add_resource(UserInfoResource, '/user/<int:user_id>/info')
|
||||||
users_api.add_resource(UserStatus, '/user/<int:user_id>/status')
|
users_api.add_resource(UserStatusResource, '/user/<int:user_id>/status')
|
||||||
users_api.add_resource(UserAvatar, '/user/<int:user_id>/avatar')
|
users_api.add_resource(UserAvatarResource, '/user/<int:user_id>/avatar')
|
||||||
users_api.add_resource(UserPassword, '/user/<int:user_id>/password')
|
users_api.add_resource(UserPasswordResource, '/user/<int:user_id>/password')
|
||||||
users_api.add_resource(UserUsers, '/users')
|
users_api.add_resource(UserUsersResource, '/users')
|
||||||
users_api.add_resource(UserUser, '/user/<int:user_id>')
|
users_api.add_resource(UserUserResource, '/user/<int:user_id>')
|
||||||
users_api.add_resource(UserRole, '/user/<int:user_id>/role')
|
users_api.add_resource(UserRoleResource, '/user/<int:user_id>/role')
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ from applications.extensions import db
|
|||||||
from applications.models import CompanyUser
|
from applications.models import CompanyUser
|
||||||
|
|
||||||
|
|
||||||
class UserStatus(Resource):
|
class UserStatusResource(Resource):
|
||||||
def put(self, user_id):
|
def put(self, user_id):
|
||||||
# 启用或者禁用用户 enable disable
|
# 启用或者禁用用户 enable disable
|
||||||
|
|
||||||
@@ -32,7 +32,7 @@ class UserStatus(Resource):
|
|||||||
return message
|
return message
|
||||||
|
|
||||||
|
|
||||||
class UserAvatar(Resource):
|
class UserAvatarResource(Resource):
|
||||||
"""修改头像"""
|
"""修改头像"""
|
||||||
|
|
||||||
def put(self, user_id):
|
def put(self, user_id):
|
||||||
@@ -45,7 +45,7 @@ class UserAvatar(Resource):
|
|||||||
return success_api(message="修改成功")
|
return success_api(message="修改成功")
|
||||||
|
|
||||||
|
|
||||||
class UserInfo(Resource):
|
class UserInfoResource(Resource):
|
||||||
|
|
||||||
@login_required
|
@login_required
|
||||||
def put(self, user_id):
|
def put(self, user_id):
|
||||||
@@ -67,7 +67,7 @@ class UserInfo(Resource):
|
|||||||
return success_api(message="更新成功")
|
return success_api(message="更新成功")
|
||||||
|
|
||||||
|
|
||||||
class UserPassword(Resource):
|
class UserPasswordResource(Resource):
|
||||||
"""前用户密码"""
|
"""前用户密码"""
|
||||||
|
|
||||||
@login_required
|
@login_required
|
||||||
|
|||||||
@@ -57,7 +57,7 @@ def update_user_role(_id, roles_list):
|
|||||||
db.session.commit()
|
db.session.commit()
|
||||||
|
|
||||||
|
|
||||||
class UserUsers(Resource):
|
class UserUsersResource(Resource):
|
||||||
"""用户列表数据操作"""
|
"""用户列表数据操作"""
|
||||||
|
|
||||||
@authorize("admin:user:main", log=True)
|
@authorize("admin:user:main", log=True)
|
||||||
@@ -138,7 +138,7 @@ class UserUsers(Resource):
|
|||||||
return success_api(message="批量删除成功")
|
return success_api(message="批量删除成功")
|
||||||
|
|
||||||
|
|
||||||
class UserUser(Resource):
|
class UserUserResource(Resource):
|
||||||
"""修改用户数据"""
|
"""修改用户数据"""
|
||||||
|
|
||||||
@authorize("admin:user:add", log=True)
|
@authorize("admin:user:add", log=True)
|
||||||
@@ -182,7 +182,7 @@ class UserUser(Resource):
|
|||||||
return success_api(message="删除成功")
|
return success_api(message="删除成功")
|
||||||
|
|
||||||
|
|
||||||
class UserRole(Resource):
|
class UserRoleResource(Resource):
|
||||||
@authorize("admin:user:edit", log=True)
|
@authorize("admin:user:edit", log=True)
|
||||||
def put(self, user_id):
|
def put(self, user_id):
|
||||||
parser = reqparse.RequestParser()
|
parser = reqparse.RequestParser()
|
||||||
|
|||||||
@@ -1,76 +0,0 @@
|
|||||||
from flask_restful import fields
|
|
||||||
|
|
||||||
power_fields = {
|
|
||||||
'powerId': fields.String(attribute="id"),
|
|
||||||
'powerName': fields.String(attribute="name"),
|
|
||||||
'powerType': fields.String(attribute="type"),
|
|
||||||
'powerUrl': fields.String(attribute="url"),
|
|
||||||
'openType': fields.String(attribute="open_type"),
|
|
||||||
'parentId': fields.String(attribute="parent_id"),
|
|
||||||
'icon': fields.String,
|
|
||||||
'sort': fields.Integer,
|
|
||||||
'create_at': fields.DateTime,
|
|
||||||
'update_time': fields.DateTime,
|
|
||||||
'enable': fields.Integer,
|
|
||||||
}
|
|
||||||
|
|
||||||
power2_fields = {
|
|
||||||
'id': fields.Integer,
|
|
||||||
'title': fields.String(attribute="name"),
|
|
||||||
'type': fields.String,
|
|
||||||
'code': fields.String,
|
|
||||||
'href': fields.String(attribute="url"),
|
|
||||||
'openType': fields.String(attribute="open_type"),
|
|
||||||
'parent_id': fields.Integer,
|
|
||||||
'icon': fields.String,
|
|
||||||
'sort': fields.Integer,
|
|
||||||
'create_at': fields.DateTime,
|
|
||||||
'update_time': fields.DateTime,
|
|
||||||
'enable': fields.Integer,
|
|
||||||
}
|
|
||||||
|
|
||||||
role_fields = {
|
|
||||||
'id': fields.Integer,
|
|
||||||
'roleName': fields.String(attribute="name"),
|
|
||||||
'roleCode': fields.String(attribute="code"),
|
|
||||||
'enable': fields.String,
|
|
||||||
'remark': fields.String,
|
|
||||||
'details': fields.String,
|
|
||||||
'sort': fields.Integer,
|
|
||||||
'create_at': fields.DateTime,
|
|
||||||
'update_at': fields.DateTime,
|
|
||||||
}
|
|
||||||
|
|
||||||
log_fields = {
|
|
||||||
'id': fields.Integer,
|
|
||||||
'method': fields.String,
|
|
||||||
'uid': fields.String,
|
|
||||||
'url': fields.String,
|
|
||||||
'desc': fields.String,
|
|
||||||
'ip': fields.String,
|
|
||||||
'user_agent': fields.String,
|
|
||||||
'success': fields.Boolean,
|
|
||||||
'create_at': fields.DateTime,
|
|
||||||
}
|
|
||||||
|
|
||||||
dept_fields = {
|
|
||||||
'deptId': fields.Integer(attribute="id"),
|
|
||||||
'parentId': fields.Integer(attribute="parent_id"),
|
|
||||||
'deptName': fields.String(attribute="dept_name"),
|
|
||||||
'leader': fields.String,
|
|
||||||
'phone': fields.String,
|
|
||||||
'email': fields.String,
|
|
||||||
'address': fields.String,
|
|
||||||
'status': fields.Integer,
|
|
||||||
'sort': fields.Integer,
|
|
||||||
}
|
|
||||||
|
|
||||||
photo_fields = {
|
|
||||||
'id': fields.Integer,
|
|
||||||
'name': fields.String,
|
|
||||||
'href': fields.String,
|
|
||||||
'mime': fields.String,
|
|
||||||
'size': fields.String,
|
|
||||||
'ext': fields.String,
|
|
||||||
'create_at': fields.DateTime,
|
|
||||||
}
|
|
||||||
@@ -1,3 +1,5 @@
|
|||||||
|
from flask_restful import fields
|
||||||
|
|
||||||
from applications.extensions import db
|
from applications.extensions import db
|
||||||
|
|
||||||
from ..base import BaseModel
|
from ..base import BaseModel
|
||||||
@@ -10,3 +12,15 @@ class FilePhoto(db.Model, BaseModel):
|
|||||||
href = db.Column(db.String(255))
|
href = db.Column(db.String(255))
|
||||||
mime = db.Column(db.CHAR(50), nullable=False)
|
mime = db.Column(db.CHAR(50), nullable=False)
|
||||||
size = db.Column(db.CHAR(30), nullable=False)
|
size = db.Column(db.CHAR(30), nullable=False)
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def fields():
|
||||||
|
return {
|
||||||
|
'id': fields.Integer,
|
||||||
|
'name': fields.String,
|
||||||
|
'href': fields.String,
|
||||||
|
'mime': fields.String,
|
||||||
|
'size': fields.String,
|
||||||
|
'ext': fields.String,
|
||||||
|
'create_at': fields.DateTime,
|
||||||
|
}
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
from flask_restful import fields
|
||||||
|
|
||||||
from applications.extensions import db
|
from applications.extensions import db
|
||||||
from .base import BaseModel
|
from .base import BaseModel
|
||||||
|
|
||||||
@@ -12,3 +14,17 @@ class LoggingModel(db.Model, BaseModel):
|
|||||||
ip = db.Column(db.String(255))
|
ip = db.Column(db.String(255))
|
||||||
success = db.Column(db.Boolean, default=True)
|
success = db.Column(db.Boolean, default=True)
|
||||||
user_agent = db.Column(db.Text)
|
user_agent = db.Column(db.Text)
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def fields():
|
||||||
|
return {
|
||||||
|
'id': fields.Integer,
|
||||||
|
'method': fields.String,
|
||||||
|
'uid': fields.String,
|
||||||
|
'url': fields.Url,
|
||||||
|
'desc': fields.String,
|
||||||
|
'ip': fields.String,
|
||||||
|
'success': fields.Boolean,
|
||||||
|
'user_agent': fields.String,
|
||||||
|
'create_at': fields.DateTime,
|
||||||
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import datetime
|
from flask_restful import fields
|
||||||
|
|
||||||
from applications.extensions import db
|
from applications.extensions import db
|
||||||
from ..base import BaseModel
|
from ..base import BaseModel
|
||||||
@@ -15,9 +15,40 @@ class RightsPower(db.Model, BaseModel):
|
|||||||
parent_id = db.Column(db.Integer, db.ForeignKey("rt_power.id"), comment='父类编号')
|
parent_id = db.Column(db.Integer, db.ForeignKey("rt_power.id"), comment='父类编号')
|
||||||
icon = db.Column(db.String(128), comment='图标')
|
icon = db.Column(db.String(128), comment='图标')
|
||||||
sort = db.Column(db.Integer, comment='排序')
|
sort = db.Column(db.Integer, comment='排序')
|
||||||
create_time = db.Column(db.DateTime, default=datetime.datetime.now, comment='创建时间')
|
enable = db.Column(db.Boolean, comment='是否开启')
|
||||||
|
|
||||||
update_time = db.Column(db.DateTime, default=datetime.datetime.now, onupdate=datetime.datetime.now, comment='更新时间')
|
|
||||||
enable = db.Column(db.Integer, comment='是否开启')
|
|
||||||
|
|
||||||
parent = db.relationship("RightsPower", remote_side=[id]) # 自关联
|
parent = db.relationship("RightsPower", remote_side=[id]) # 自关联
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def fields():
|
||||||
|
return {
|
||||||
|
'powerId': fields.String(attribute="id"),
|
||||||
|
'powerName': fields.String(attribute="name"),
|
||||||
|
'powerType': fields.String(attribute="type"),
|
||||||
|
'powerUrl': fields.String(attribute="url"),
|
||||||
|
'openType': fields.String(attribute="open_type"),
|
||||||
|
'parentId': fields.String(attribute="parent_id"),
|
||||||
|
'icon': fields.String,
|
||||||
|
'sort': fields.Integer,
|
||||||
|
'create_at': fields.DateTime,
|
||||||
|
'update_at': fields.DateTime,
|
||||||
|
'enable': fields.Integer,
|
||||||
|
}
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def fields2():
|
||||||
|
return {
|
||||||
|
'id': fields.Integer,
|
||||||
|
'title': fields.String(attribute="name"),
|
||||||
|
'type': fields.String,
|
||||||
|
'code': fields.String,
|
||||||
|
'href': fields.String(attribute="url"),
|
||||||
|
'openType': fields.String(attribute="open_type"),
|
||||||
|
'parent_id': fields.Integer,
|
||||||
|
'icon': fields.String,
|
||||||
|
'sort': fields.Integer,
|
||||||
|
'enable': fields.Boolean,
|
||||||
|
'update_at': fields.DateTime,
|
||||||
|
'create_at': fields.DateTime,
|
||||||
|
|
||||||
|
}
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
from flask_restful import fields
|
||||||
|
|
||||||
from applications.extensions import db
|
from applications.extensions import db
|
||||||
from ..base import BaseModel
|
from ..base import BaseModel
|
||||||
|
|
||||||
@@ -7,9 +9,23 @@ class RightsRole(db.Model, BaseModel):
|
|||||||
id = db.Column(db.Integer, primary_key=True, comment='角色ID')
|
id = db.Column(db.Integer, primary_key=True, comment='角色ID')
|
||||||
name = db.Column(db.String(255), comment='角色名称')
|
name = db.Column(db.String(255), comment='角色名称')
|
||||||
code = db.Column(db.String(255), comment='角色标识')
|
code = db.Column(db.String(255), comment='角色标识')
|
||||||
enable = db.Column(db.Integer, comment='是否启用')
|
enable = db.Column(db.Boolean, comment='是否启用')
|
||||||
remark = db.Column(db.String(255), comment='备注')
|
comment = db.Column(db.String(255), comment='备注')
|
||||||
details = db.Column(db.String(255), comment='详情')
|
details = db.Column(db.String(255), comment='详情')
|
||||||
sort = db.Column(db.Integer, comment='排序')
|
sort = db.Column(db.Integer, comment='排序')
|
||||||
|
|
||||||
power = db.relationship('RightsPower', secondary="rt_role_power", backref=db.backref('role'))
|
power = db.relationship('RightsPower', secondary="rt_role_power", backref=db.backref('role'))
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def fields():
|
||||||
|
return {
|
||||||
|
'id': fields.Integer,
|
||||||
|
'roleName': fields.String(attribute="name"),
|
||||||
|
'roleCode': fields.String(attribute="code"),
|
||||||
|
'enable': fields.Boolean,
|
||||||
|
'comment': fields.String,
|
||||||
|
'details': fields.String,
|
||||||
|
'sort': fields.Integer,
|
||||||
|
'create_at': fields.DateTime,
|
||||||
|
'update_at': fields.DateTime,
|
||||||
|
}
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
from flask_restful import fields
|
||||||
from applications.extensions import db
|
from applications.extensions import db
|
||||||
from ..base import BaseModel
|
from ..base import BaseModel
|
||||||
|
|
||||||
@@ -7,10 +8,26 @@ class CompanyDepartment(db.Model, BaseModel):
|
|||||||
id = db.Column(db.Integer, primary_key=True, comment="部门ID")
|
id = db.Column(db.Integer, primary_key=True, comment="部门ID")
|
||||||
parent_id = db.Column(db.Integer, comment="父级编号")
|
parent_id = db.Column(db.Integer, comment="父级编号")
|
||||||
dept_name = db.Column(db.String(50), comment="部门名称")
|
dept_name = db.Column(db.String(50), comment="部门名称")
|
||||||
sort = db.Column(db.Integer, comment="排序")
|
|
||||||
leader = db.Column(db.String(50), comment="负责人")
|
leader = db.Column(db.String(50), comment="负责人")
|
||||||
phone = db.Column(db.String(20), comment="联系方式")
|
phone = db.Column(db.String(20), comment="联系方式")
|
||||||
email = db.Column(db.String(50), comment="邮箱")
|
email = db.Column(db.String(50), comment="邮箱")
|
||||||
status = db.Column(db.Integer, comment='状态(1开启,0关闭)')
|
status = db.Column(db.Boolean, comment='状态(1开启,0关闭)')
|
||||||
remark = db.Column(db.Text, comment="备注")
|
comment = db.Column(db.Text, comment="备注")
|
||||||
address = db.Column(db.String(255), comment="详细地址")
|
address = db.Column(db.String(255), comment="详细地址")
|
||||||
|
sort = db.Column(db.Integer, comment="排序")
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def fields():
|
||||||
|
return {
|
||||||
|
'deptId': fields.Integer(attribute="id"),
|
||||||
|
'parentId': fields.Integer(attribute="parent_id"),
|
||||||
|
'deptName': fields.String(attribute="dept_name"),
|
||||||
|
'sort': fields.Integer,
|
||||||
|
'leader': fields.String,
|
||||||
|
'phone': fields.String,
|
||||||
|
'email': fields.String,
|
||||||
|
'status': fields.Boolean,
|
||||||
|
'comment': fields.String,
|
||||||
|
'address': fields.String,
|
||||||
|
'create_at': fields.DateTime
|
||||||
|
}
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
from flask_login import UserMixin
|
from flask_login import UserMixin
|
||||||
from werkzeug.security import generate_password_hash, check_password_hash
|
from werkzeug.security import generate_password_hash, check_password_hash
|
||||||
|
from flask_restful import fields
|
||||||
|
|
||||||
from applications.extensions import db
|
from applications.extensions import db
|
||||||
from ..base import BaseModel
|
from ..base import BaseModel
|
||||||
@@ -12,7 +13,7 @@ class CompanyUser(db.Model, UserMixin, BaseModel):
|
|||||||
realname = db.Column(db.String(20), comment='真实名字')
|
realname = db.Column(db.String(20), comment='真实名字')
|
||||||
mobile = db.Column(db.String(11), comment='电话号码')
|
mobile = db.Column(db.String(11), comment='电话号码')
|
||||||
avatar = db.Column(db.String(255), comment='头像', default="/static/admin/admin/images/avatar.jpg")
|
avatar = db.Column(db.String(255), comment='头像', default="/static/admin/admin/images/avatar.jpg")
|
||||||
remark = db.Column(db.String(255), comment='备注')
|
comment = db.Column(db.String(255), comment='备注')
|
||||||
password_hash = db.Column(db.String(128), comment='哈希密码')
|
password_hash = db.Column(db.String(128), comment='哈希密码')
|
||||||
enable = db.Column(db.Integer, default=0, comment='启用')
|
enable = db.Column(db.Integer, default=0, comment='启用')
|
||||||
dept_id = db.Column(db.Integer, comment='部门id')
|
dept_id = db.Column(db.Integer, comment='部门id')
|
||||||
@@ -24,3 +25,21 @@ class CompanyUser(db.Model, UserMixin, BaseModel):
|
|||||||
|
|
||||||
def validate_password(self, password):
|
def validate_password(self, password):
|
||||||
return check_password_hash(self.password_hash, password)
|
return check_password_hash(self.password_hash, password)
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def fields():
|
||||||
|
return {
|
||||||
|
'id': fields.Integer,
|
||||||
|
'username': fields.String,
|
||||||
|
'realname': fields.String,
|
||||||
|
'mobile': fields.String,
|
||||||
|
'avatar': fields.Url,
|
||||||
|
'comment': fields.String,
|
||||||
|
# 'password_hash': fields.String,
|
||||||
|
'enable': fields.Boolean,
|
||||||
|
# 'dept_id': fields.Integer,
|
||||||
|
'dept_id': fields.Integer,
|
||||||
|
'create_at': fields.DateTime,
|
||||||
|
'update_at': fields.DateTime,
|
||||||
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
from flask import Blueprint, request, render_template
|
from flask import Blueprint, request, render_template
|
||||||
from sqlalchemy import desc
|
from sqlalchemy import desc
|
||||||
from flask_restful import marshal
|
from flask_restful import marshal
|
||||||
from applications.common.serialization import log_fields
|
|
||||||
|
|
||||||
from applications.common.utils.http import table_api
|
from applications.common.utils.http import table_api
|
||||||
from applications.common.utils.rights import authorize, permission_required
|
from applications.common.utils.rights import authorize, permission_required
|
||||||
@@ -25,7 +24,7 @@ def login_log():
|
|||||||
url='/api/v1/passport/login').order_by(
|
url='/api/v1/passport/login').order_by(
|
||||||
desc(LoggingModel.create_at)).paginate(
|
desc(LoggingModel.create_at)).paginate(
|
||||||
page=page, per_page=limit, error_out=False)
|
page=page, per_page=limit, error_out=False)
|
||||||
data = marshal(log_paginate.items, log_fields)
|
data = marshal(log_paginate.items, LoggingModel.fields())
|
||||||
|
|
||||||
return table_api(result={'items': data,
|
return table_api(result={'items': data,
|
||||||
'total': log_paginate.total, },
|
'total': log_paginate.total, },
|
||||||
@@ -41,7 +40,7 @@ def operate_log():
|
|||||||
LoggingModel.url != '/api/v1/passport/login').order_by(
|
LoggingModel.url != '/api/v1/passport/login').order_by(
|
||||||
desc(LoggingModel.create_at)).paginate(
|
desc(LoggingModel.create_at)).paginate(
|
||||||
page=page, per_page=limit, error_out=False)
|
page=page, per_page=limit, error_out=False)
|
||||||
data = marshal(log_paginate.items, log_fields)
|
data = marshal(log_paginate.items, LoggingModel.fields())
|
||||||
return table_api(result={'items': data,
|
return table_api(result={'items': data,
|
||||||
'total': log_paginate.total, },
|
'total': log_paginate.total, },
|
||||||
code=0)
|
code=0)
|
||||||
|
|||||||
@@ -167,14 +167,14 @@
|
|||||||
success: function (res) {
|
success: function (res) {
|
||||||
layer.close(loading)
|
layer.close(loading)
|
||||||
if (res.success) {
|
if (res.success) {
|
||||||
layer.msg(res.msg, {
|
layer.msg(res.message, {
|
||||||
icon: 1,
|
icon: 1,
|
||||||
time: 1000,
|
time: 1000,
|
||||||
}, function () {
|
}, function () {
|
||||||
obj.del()
|
obj.del()
|
||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
layer.msg(res.msg, {
|
layer.msg(res.message, {
|
||||||
icon: 2,
|
icon: 2,
|
||||||
time: 1000,
|
time: 1000,
|
||||||
})
|
})
|
||||||
@@ -215,14 +215,14 @@
|
|||||||
success: function (res) {
|
success: function (res) {
|
||||||
layer.close(loading)
|
layer.close(loading)
|
||||||
if (res.success) {
|
if (res.success) {
|
||||||
layer.msg(res.msg, {
|
layer.msg(res.message, {
|
||||||
icon: 1,
|
icon: 1,
|
||||||
time: 1000,
|
time: 1000,
|
||||||
}, function () {
|
}, function () {
|
||||||
table.reload('tables')
|
table.reload('tables')
|
||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
layer.msg(res.msg, {
|
layer.msg(res.message, {
|
||||||
icon: 2,
|
icon: 2,
|
||||||
time: 1000,
|
time: 1000,
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -65,7 +65,7 @@
|
|||||||
location.href = '/admin'
|
location.href = '/admin'
|
||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
popup.failure(result.success, function () {
|
popup.failure(result.message, function () {
|
||||||
document.getElementById('captchaImage').src = captchaPath + '?' + Math.random()
|
document.getElementById('captchaImage').src = captchaPath + '?' + Math.random()
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user