break:移除flask-restful

This commit is contained in:
zhengxinonly
2022-05-21 02:10:26 +08:00
parent d54eb4dc3e
commit 12d4dfe410
7 changed files with 58 additions and 103 deletions
+9 -24
View File
@@ -1,12 +1,11 @@
import copy
from typing import Optional
from collections import OrderedDict
from typing import Optional
from flask import request, jsonify, current_app
from flask.views import MethodView
from flask_login import current_user
from flask_pydantic import validate
from pydantic import BaseModel, Field
from common.utils.http import success_api, fail_api
@@ -148,27 +147,6 @@ def make_menu_tree():
return sorted(menu_dict.get(0), key=lambda item: item['sort'])
# 删除权限(目前没有判断父节点自动删除子节点)
def remove_power(power_id):
power = RightModel.query.filter_by(id=power_id).first()
role_id_list = []
roles = power.role
for role in roles:
role_id_list.append(role.id)
roles = RoleModel.query.filter(RoleModel.id.in_(role_id_list)).all()
for p in roles:
power.role.remove(p)
r = RightModel.query.filter_by(id=power_id).delete()
db.session.commit()
return r
# 批量删除权限
def batch_remove_power(ids):
for _id in ids:
remove_power(_id)
class PowerModel(BaseModel):
icon: str
open_type: Optional[str] = Field(alias='openType')
@@ -208,7 +186,14 @@ class RightsApi(MethodView):
def delete(self):
ids = request.form.getlist('ids[]')
batch_remove_power(ids)
for id in ids:
role = RoleModel.query.filter_by(id=id).first()
# 删除该角色的权限和用户
role.power = []
role.user = []
r = RoleModel.query.filter_by(id=id).delete()
db.session.commit()
return success_api(message="批量删除成功")
+19 -46
View File
@@ -1,48 +1,21 @@
from flask import request
from flask.views import MethodView
from flask_restful import reqparse
from common.utils.http import table_api, success_api, fail_api
from extensions import db
from models import RightModel, RoleModel, UserModel
def remove_role(role_id):
""" 删除角色 """
role = RoleModel.query.filter_by(id=role_id).first()
# 删除该角色的权限
power_id_list = []
for p in role.power:
power_id_list.append(p.id)
powers = RightModel.query.filter(RightModel.id.in_(power_id_list)).all()
for p in powers:
role.power.remove(p)
user_id_list = []
for u in role.user:
user_id_list.append(u.id)
users = UserModel.query.filter(UserModel.id.in_(user_id_list)).all()
for u in users:
role.user.remove(u)
r = RoleModel.query.filter_by(id=role_id).delete()
db.session.commit()
return r
def batch_remove_role(role_ids):
""" 批量删除 """
for role_id in role_ids:
remove_role(role_id)
from models import RightModel, RoleModel
def role_deletes():
parser = reqparse.RequestParser()
parser.add_argument('ids[]', action='append', dest='ids')
ids = request.form.getlist('ids[]')
for id in ids:
role = RoleModel.query.filter_by(id=id).first()
# 删除该角色的权限和用户
role.power = []
role.user = []
res = parser.parse_args()
batch_remove_role(res.ids)
r = RoleModel.query.filter_by(id=id).delete()
db.session.commit()
return success_api(message="批量删除成功")
@@ -169,21 +142,21 @@ class RolePowerApi(MethodView):
""" 更新角色权限 """
role = RoleModel.query.filter_by(id=_id).first()
power_id_list = []
for p in role.power:
power_id_list.append(p.id)
powers = RightModel.query.filter(RightModel.id.in_(power_id_list)).all()
for p in powers:
role.power.remove(p)
powers = RightModel.query.filter(RightModel.id.in_(power_list)).all()
for p in powers:
role.power.append(p)
role.power = powers
db.session.commit()
return success_api(message="授权成功")
# 角色删除
def delete(self, _id):
res = remove_role(_id)
if not res:
role = RoleModel.query.filter_by(id=_id).first()
# 删除该角色的权限和用户
role.power = []
role.user = []
r = RoleModel.query.filter_by(id=_id).delete()
db.session.commit()
if not r:
return fail_api(message="角色删除失败")
return success_api(message="角色删除成功")
+22 -28
View File
@@ -4,7 +4,6 @@ from flask import request, jsonify
from flask.views import MethodView
from flask_login import current_user
from flask_pydantic import validate
from flask_restful import reqparse
from pydantic import BaseModel, Field
from sqlalchemy import desc
@@ -181,35 +180,31 @@ def user_role_resource(_id, body: PersonModel2):
def user_info(_id, action):
if action == 'info':
parser = reqparse.RequestParser()
parser.add_argument('realName', type=str, dest='real_name')
parser.add_argument('username', type=str)
parser.add_argument('remark', type=str)
parser.add_argument('details', type=str)
res = parser.parse_args()
real_name = request.json.get('realName', '')
username = request.json.get('username', '')
remark = request.json.get('remark', '')
details = request.json.get('details', '')
ret = UserModel.query.get(_id)
ret.username = res.username
ret.realname = res.real_name
ret.remark = res.details
ret.username = username
ret.realname = real_name
ret.remark = details
db.session.commit()
if not ret:
return fail_api(message="出错啦")
return success_api(message="更新成功")
elif action == 'status':
parser = reqparse.RequestParser()
parser.add_argument('userId', type=int, required=True, dest='user_id')
parser.add_argument('operate', type=int, required=True, dest='operate', choices=[0, 1])
user_id = int(request.json.get('userId', 0)) # int
operate = int(request.json.get('operate', 0)) # int
if operate not in [0, 1]:
return {'status': 'error', 'message': '请求有误'}
res = parser.parse_args()
if res.operate == 1:
if operate == 1:
user = UserModel.query.get(_id)
user.enable = res.operate
user.enable = operate
message = success_api(message="启动成功")
else:
user = UserModel.query.filter_by(id=res.user_id).update({"enable": res.operate})
user = UserModel.query.filter_by(id=user_id).update({"enable": operate})
message = success_api(message="禁用成功")
if user:
db.session.commit()
@@ -225,22 +220,21 @@ def user_info(_id, action):
return fail_api(message="出错啦")
return success_api(message="修改成功")
elif action == 'password':
parser = reqparse.RequestParser()
parser.add_argument('oldPassword', type=str, required=True, help='旧密码不得为空')
parser.add_argument('newPassword', type=str, required=True, help='新密码不得为空')
parser.add_argument('confirmPassword', type=str, required=True, help='确认密码不能为空')
oldPassword = request.json.get('oldPassword', '')
newPassword = request.json.get('newPassword', '')
confirmPassword = request.json.get('confirmPassword', '')
if not all([oldPassword, newPassword, confirmPassword]):
return {'status': 'error', 'message': '密码不能为空'}
res = parser.parse_args()
if res.newPassword != res.confirmPassword:
if newPassword != confirmPassword:
return fail_api(message='确认密码不一致')
""" 修改当前用户密码 """
user = UserModel.query.get(_id)
is_right = user.validate_password(res.oldPassword)
is_right = user.validate_password(oldPassword)
if not is_right:
return jsonify(success=False, message="旧密码错误")
user.set_password(res.newPassword)
user.set_password(newPassword)
db.session.add(user)
db.session.commit()