From 40408073a234dc2bdd917ff7f1fe4d2edf001032 Mon Sep 17 00:00:00 2001 From: xuyonghao <898441624@qq.com> Date: 星期三, 18 十二月 2024 14:10:29 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- app/service/user.py | 30 ++++++++++++++++++++++-------- 1 files changed, 22 insertions(+), 8 deletions(-) diff --git a/app/service/user.py b/app/service/user.py index 1ce7417..09a82ad 100644 --- a/app/service/user.py +++ b/app/service/user.py @@ -4,8 +4,8 @@ from app.api import pwd_context from app.api.dialog import dialog_list from app.config.config import settings -from app.config.const import RAGFLOW, BISHENG, DIFY -from app.models import RoleModel, GroupModel, AgentType, role_resource_table, DialogModel +from app.config.const import RAGFLOW, BISHENG, DIFY, USER_STATSU_DELETE +from app.models import RoleModel, GroupModel, AgentType, role_resource_table, DialogModel, OrganizationModel from app.models.menu_model import WebMenuModel, MenuCapacityModel from app.models.user_model import UserModel, UserAppModel from Log import logger @@ -19,7 +19,7 @@ async def get_user_list(db, page_index: int, page_size: int, keyword: str, role_key: str, user_id): - query = db.query(UserModel).filter(UserModel.permission != "admin") + query = db.query(UserModel).filter(UserModel.permission != "admin", UserModel.status != USER_STATSU_DELETE) # if role_key != "admin": # query.filter(UserModel.creator==user_id) if keyword: @@ -32,7 +32,7 @@ async def edit_user_status(db, status: str, user_id: int): try: - db.query(UserModel).filter(UserModel.id == user_id).update({"status": status}) + db.query(UserModel).filter(UserModel.id == user_id, UserModel.status != USER_STATSU_DELETE).update({"status": status}) db.commit() except Exception as e: logger.error(e) @@ -43,7 +43,7 @@ async def delete_user_data(db, user_id: str): try: - db.query(UserModel).filter(UserModel.id == user_id, UserModel.permission != "admin").delete() + db.query(UserModel).filter(UserModel.id == user_id, UserModel.permission != "admin").update({"status": USER_STATSU_DELETE}) db.commit() except Exception as e: logger.error(e) @@ -165,7 +165,7 @@ dept = [] role_set = set() dept_set = set() - user = db.query(UserModel).filter_by(id=user_id).first() + user = db.query(UserModel).filter(UserModel.id==user_id,UserModel.status !=USER_STATSU_DELETE).first() await role_resource(role_set, roles, permissions, user.roles) for ogt in user.organizations: dept.append(ogt.to_json()) @@ -241,10 +241,12 @@ dialog_list = [] menu_dict = {} res = [] + # print(user_id) user = db.query(UserModel).filter_by(id=user_id).first() for group in user.groups: for dialog in group.dialogs: dialog_list.append(dialog.id) + # print(dialog_list) menu_list = db.query(WebMenuModel.id, WebMenuModel.title, WebMenuModel.describe, WebMenuModel.icon, WebMenuModel.desc,WebMenuModel.rank, WebMenuModel.img, MenuCapacityModel.capacity_id, MenuCapacityModel.capacity_type, MenuCapacityModel.chat_id.label("agentId")).outerjoin( MenuCapacityModel, WebMenuModel.id == MenuCapacityModel.menu_id).outerjoin( @@ -258,7 +260,7 @@ for m in menus: if user.permission == "admin": continue - elif not m.capacity_type or m.capacity_type == 1 and m.capacity_id not in dialog_list: + elif m.capacity_id not in dialog_list: break else: res.append({ @@ -343,4 +345,16 @@ user = db.query(UserModel).filter_by(id=user_id).first() - return {"roles": [i.to_dict() for i in user.roles], "user": user.to_dict()} \ No newline at end of file + return {"roles": [i.to_dict() for i in user.roles], "user": user.to_dict()} + + +async def edit_user_dept(db, user_id, dept_list): + try: + user = db.query(UserModel).filter(UserModel.id == user_id).first() + user.organizations = [db.get(OrganizationModel, deptId) for deptId in dept_list] + db.commit() + except Exception as e: + logger.error(e) + db.rollback() + return False + return True \ No newline at end of file -- Gitblit v1.8.0