From 02656cc4fa7633fd38ec1a4419ca273b0e1135bc Mon Sep 17 00:00:00 2001 From: jmj <780682456@163.com> Date: Mon, 10 Apr 2023 20:22:27 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E7=94=A8=E6=88=B7=E7=AE=A1?= =?UTF-8?q?=E7=90=86=E4=B8=AD=E7=82=B9=E5=87=BB=E9=83=A8=E9=97=A8=E6=A0=91?= =?UTF-8?q?=E5=88=97=E8=A1=A8=E7=94=A8=E6=88=B7=E6=98=BE=E7=A4=BA=E4=B8=8D?= =?UTF-8?q?=E6=AD=A3=E7=A1=AE=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- applications/common/curd.py | 24 +++++++++++++++++++++++- applications/view/admin/user.py | 5 +++-- 2 files changed, 26 insertions(+), 3 deletions(-) diff --git a/applications/common/curd.py b/applications/common/curd.py index 9a4f16c..eb57884 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 30a6bd1..765e4a7 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( -- Gitee