diff --git a/applications/common/curd.py b/applications/common/curd.py index 9a4f16c0d4a4ed5a0c80579c914f1b4a0cb0c080..eb57884430e22f1f823c850a5e8b4d3607b93267 100644 --- a/applications/common/curd.py +++ b/applications/common/curd.py @@ -5,6 +5,7 @@ from marshmallow_sqlalchemy import SQLAlchemyAutoSchema from applications.extensions import db, ma +from applications.models import Dept class LogicalDeleteMixin(object): """ @@ -16,7 +17,8 @@ class LogicalDeleteMixin(object): Test.query.logic_all() """ create_at = db.Column(db.DateTime, default=datetime.datetime.now, comment='创建时间') - update_at = db.Column(db.DateTime, default=datetime.datetime.now, onupdate=datetime.datetime.now, comment='创建时间') + update_at = db.Column(db.DateTime, default=datetime.datetime.now, onupdate=datetime.datetime.now, + comment='创建时间') delete_at = db.Column(db.DateTime, comment='删除时间') @@ -27,6 +29,7 @@ def auto_model_jsonify(data, model: db.Model): 示例 power_data = curd.auto_model_jsonify(model=Dept, data=dept) """ + def get_model(): return model @@ -92,3 +95,22 @@ def disable_status(model: db.Model, id): db.session.commit() return True return False + + +def get_dept(dept_id: int, dept_all_list=None, dept_list=None): + """ + 递归获取部门的所有下级部门 + :param dept_id: 需要获取的部门id + :param dept_all_list: 所有部门列表 + :param dept_list: 递归部门list + :return: + """ + if not dept_all_list: + dept_all_list = db.session.query(Dept.id,Dept.parent_id).all() + if dept_list is None: + dept_list = [dept_id] + for ele in dept_all_list: + if ele[1] == dept_id: + dept_list.append(ele[0]) + get_dept(ele[0], dept_all_list, dept_list) + return list(set(dept_list)) diff --git a/applications/view/admin/user.py b/applications/view/admin/user.py index 30a6bd1c2c4b5a69e7bf3d5eab9f9367b58c150d..765e4a77bd5a9b2e6bd365dc47daa7e415c6b48e 100644 --- a/applications/view/admin/user.py +++ b/applications/view/admin/user.py @@ -3,7 +3,7 @@ from flask_login import login_required, current_user from sqlalchemy import desc from applications.common import curd -from applications.common.curd import enable_status, disable_status +from applications.common.curd import enable_status, disable_status, get_dept from applications.common.utils.http import table_api, fail_api, success_api from applications.common.utils.rights import authorize from applications.common.utils.validate import str_escape @@ -37,7 +37,8 @@ def data(): if username: filters.append(User.realname.contains(username)) if dept_id: - filters.append(User.realname == dept_id) + dept_id_list = get_dept(dept_id) + filters.append(User.dept_id.in_(dept_id_list)) # print(*filters) query = db.session.query(