| | |
| | | @group_router.get("/list", response_model=Response) |
| | | async def user_group_list(current:int, pageSize:int, keyword="", current_user: UserModel = Depends(get_current_user), |
| | | db=Depends(get_db)): |
| | | return Response(code=200, msg="", data=await group_list(db, pageSize, current, keyword, current_user.permission, current_user.id)) |
| | | return Response(code=200, msg="", data=await group_list(db, pageSize, current, keyword)) |
| | | |
| | | |
| | | @group_router.post("/add_group", response_model=Response) |
| | | async def add_group(group: GroupData, current_user: UserModel = Depends(get_current_user), db=Depends(get_db)): |
| | | if not group.group_name: |
| | | if not group.groupName: |
| | | return Response(code=400, msg="The group_name cannot be empty!") |
| | | db_group = db.query(GroupModel).filter(GroupModel.group_name == group.group_name).first() |
| | | db_group = db.query(GroupModel).filter(GroupModel.group_name == group.groupName).first() |
| | | if db_group: |
| | | return Response(code=200, msg="group already created") |
| | | is_create = await create_group(db, group.group_name, group.group_description, current_user.id) |
| | | return Response(code=400, msg="group already created") |
| | | is_create = await create_group(db, group.groupName, group.description, current_user.id) |
| | | if not is_create: |
| | | return Response(code=200, msg="group create failure", data={}) |
| | | return Response(code=200, msg="group create successfully", data={"group_name": group.group_name}) |
| | | return Response(code=200, msg="group create successfully", data={"group_name": group.groupName}) |
| | | |
| | | |
| | | @group_router.put("/edit_group", response_model=Response) |
| | | async def edit_group(group: GroupData, current_user: UserModel = Depends(get_current_user), db=Depends(get_db)): |
| | | if not group.group_name: |
| | | if not group.groupName: |
| | | return Response(code=400, msg="The group_name cannot be empty!") |
| | | db_group = db.query(GroupModel).filter(GroupModel.group_name == group.group_name).first() |
| | | db_group = db.query(GroupModel).filter(GroupModel.group_name == group.groupName).first() |
| | | if db_group and db_group.id != group.id: |
| | | return Response(code=200, msg="group_name already created") |
| | | return Response(code=400, msg="group_name already created") |
| | | is_edit = await edit_group_data(db, group.id, |
| | | {"group_name": group.group_name, "group_description": group.group_description, |
| | | {"group_name": group.groupName, "group_description": group.description, |
| | | "updated_at": datetime.now()}) |
| | | if not is_edit: |
| | | return Response(code=200, msg="group edit failure", data={}) |
| | | return Response(code=200, msg="group edit successfully", data={"group_name": group.group_name}) |
| | | return Response(code=200, msg="group edit successfully", data={"group_name": group.groupName}) |
| | | |
| | | |
| | | @group_router.put("/edit_group_status", response_model=Response) |
| | | async def edit_group_status(group: GroupData, current_user: UserModel = Depends(get_current_user), db=Depends(get_db)): |
| | | if group.group_status not in ["0", "1"]: |
| | | return Response(code=400, msg="The status cannot be {}!".format(group.group_status)) |
| | | if group.status not in ["0", "1"]: |
| | | return Response(code=400, msg="The status cannot be {}!".format(group.status)) |
| | | db_group = db.query(GroupModel).filter(GroupModel.id == group.id).first() |
| | | if not db_group: |
| | | return Response(code=200, msg="group does not exist") |
| | | return Response(code=400, msg="group does not exist") |
| | | is_edit = await edit_group_data(db, group.id, |
| | | {"status": group.group_status,"updated_at": datetime.now()}) |
| | | {"status": group.status,"updated_at": datetime.now()}) |
| | | if not is_edit: |
| | | return Response(code=200, msg="group status edit failure", data={}) |
| | | return Response(code=200, msg="group status edit successfully", data={"group_name": group.group_name}) |
| | | return Response(code=200, msg="group status edit successfully", data={"group_name": group.groupName}) |
| | | |
| | | |
| | | @group_router.delete("/delete_group/{groupId}", response_model=Response) |
| | |
| | | return Response(code=200, msg="group delete successfully", data={}) |
| | | |
| | | |
| | | @group_router.post("/group_users", response_model=Response) |
| | | async def group_users(group: GroupData, current_user: UserModel = Depends(get_current_user), db=Depends(get_db)): |
| | | db_group = db.query(GroupModel).filter(GroupModel.id == group.id).first() |
| | | @group_router.get("/group_users", response_model=Response) |
| | | async def group_users(groupId:int, current_user: UserModel = Depends(get_current_user), db=Depends(get_db)): |
| | | db_group = db.query(GroupModel).filter(GroupModel.id == groupId).first() |
| | | if not db_group: |
| | | return Response(code=200, msg="group does not exist", data={}) |
| | | return Response(code=200, msg="success", data=await get_group_users(db, group.id)) |
| | | return Response(code=200, msg="success", data=await get_group_users(db, groupId)) |
| | | |
| | | |
| | | @group_router.post("/save_group_user", response_model=Response) |
| | |
| | | db_group = db.query(GroupModel).filter(GroupModel.id == group_user.id).first() |
| | | if not db_group: |
| | | return Response(code=200, msg="group does not exist") |
| | | is_success = await save_user_to_group(db, current_user.id, group_user.id, group_user.user_list) |
| | | is_success = await save_user_to_group(db, current_user.id, group_user.id, group_user.userList) |
| | | if not is_success: |
| | | return Response(code=500, msg="save user to group failure", data={}) |
| | | return Response(code=200, msg="success", data={}) |
| | |
| | | db_group = db.query(GroupModel).filter(GroupModel.id == group_resource.id).first() |
| | | if not db_group: |
| | | return Response(code=200, msg="group does not exist") |
| | | is_success = await save_group_resource(db, current_user.id, group_resource.id, group_resource.agents, group_resource.dialogs, group_resource.knowledges) |
| | | is_success = await save_group_resource(db, current_user.id, group_resource.id, group_resource.llms, group_resource.dialogs, group_resource.knowledges) |
| | | if not is_success: |
| | | return Response(code=500, msg="save user to group failure", data={}) |
| | | return Response(code=200, msg="success", data={}) |
| | |
| | | if len(self.dialogs.all()) > 0: |
| | | json['dialogs'] = [dialog.to_json() for dialog in self.dialogs] |
| | | |
| | | if len(self.agents.all()) > 0: |
| | | json['agents'] = [agent.to_json() for agent in self.agents] |
| | | # if len(self.agents.all()) > 0: |
| | | # json['agents'] = [agent.to_json() for agent in self.agents] |
| | | |
| | | if len(self.llms.all()) > 0: |
| | | json['llms'] = [llm.to_json() for llm in self.llms] |
| | |
| | | |
| | | class GroupData(BaseModel): |
| | | id: Optional[int] = None |
| | | group_name: Optional[str] = "" |
| | | group_description: Optional[str] = "" |
| | | group_status: Optional[str] = "" |
| | | groupName: Optional[str] = "" |
| | | description: Optional[str] = "" |
| | | status: Optional[str] = "" |
| | | |
| | | class GroupUsers(BaseModel): |
| | | id: int |
| | | user_list: list |
| | | userList: list |
| | | |
| | | |
| | | class GroupResource(BaseModel): |
| | | id: int |
| | | agents: list |
| | | llms: list |
| | | dialogs: list |
| | | knowledges: list |
| | | |
| | |
| | | |
| | | async def update_dialog_status_service(db, dialog_id, status): |
| | | try: |
| | | DialogModel(id=dialog_id).update({"status":status}) |
| | | db.query(DialogModel).filter_by(id=dialog_id).update({"status":status}) |
| | | db.commit() |
| | | except Exception as e: |
| | | logger.error(e) |
| | |
| | | from Log import logger |
| | | |
| | | |
| | | async def group_list(db, page_size: int, page_index: int, keyword: str, role_key:str, user_id): |
| | | logger.info("-------------------------group_list----------------------------------") |
| | | query = db.query(GroupModel).filter(GroupModel.creator==user_id) |
| | | async def group_list(db, page_size: int, page_index: int, keyword: str): |
| | | # logger.info("-------------------------group_list----------------------------------") |
| | | query = db.query(GroupModel) |
| | | # if role_key != "admin": |
| | | # query.filter(GroupModel.creator==user_id) |
| | | if keyword: |
| | | query = query.filter(GroupModel.group_name.like('%{}%'.format(keyword))) |
| | | items = query.order_by(GroupModel.id.desc()).limit(page_size).offset( |
| | | (page_index - 1) * page_size).all() |
| | | total = query.count() |
| | | print(total) |
| | | items = query.order_by(GroupModel.id.desc()).limit(page_size).offset((page_index - 1) * page_size) |
| | | |
| | | return {"total": query.count(), "items": [item.to_json() for item in items]} |
| | | return {"total":total , "items": [item.to_dict() for item in items.all()]} |
| | | |
| | | |
| | | async def create_group(db, group_name: str, group_description: str, user_id): |
| | |
| | | async def get_group_users(db, group_id): |
| | | not_group_user = [] |
| | | in_group_user = [] |
| | | user_list = [u.id for i in |
| | | db.query(GroupModel).filter(GroupModel.id.__eq__(group_id)).all() for u in i.users] |
| | | for u in db.query(UserModel.id, UserModel.username).filter(UserModel.permission!="admin").order_by(UserModel.id.desc()).all(): |
| | | user_list = [u.id for u in db.query(GroupModel).filter(GroupModel.id.__eq__(group_id)).first().users] |
| | | for u in db.query(UserModel.id, UserModel.username,UserModel.permission).filter(UserModel.permission!="admin").order_by(UserModel.id.desc()).all(): |
| | | if u.id in user_list: |
| | | in_group_user.append({"user_id": u.id, "user_name": u.username}) |
| | | in_group_user.append({"userId": u.id, "userName": u.username}) |
| | | else: |
| | | not_group_user.append({"user_id": u.id, "user_name": u.username}) |
| | | return {"in_group": in_group_user, "not_in_group": not_group_user} |
| | | not_group_user.append({"userId": u.id, "userName": u.username}) |
| | | return {"inGroup": in_group_user, "notInGroup": not_group_user} |
| | | |
| | | |
| | | async def save_user_to_group(db, user_id, group_id, user_list): |
| | |
| | | return False |
| | | return True |
| | | |
| | | async def save_group_resource(db, user_id, group_id, agents, dialogs, knowledges): |
| | | async def save_group_resource(db, user_id, group_id, llms, dialogs, knowledges): |
| | | try: |
| | | group = db.query(GroupModel).filter(GroupModel.id.__eq__(group_id)).first() |
| | | group.agents = [db.get(CanvasModel, user) for user in agents] |
| | | group.llms = [db.get(CommonLlmModel, user) for user in llms] |
| | | group.dialogs = [db.get(DialogModel, user) for user in dialogs] |
| | | group.knowledges = [db.get(KnowledgeModel, user) for user in knowledges] |
| | | db.commit() |
| | |
| | | logger.error("注册用户获取token失败!") |
| | | return False |
| | | user_list = db.query(UserAppModel).filter(UserAppModel.app_type==RAGFLOW).all() |
| | | user = db.query(UserAppModel).filter(UserAppModel.userFlag==sync_user.id, UserAppModel.app_type == RAGFLOW).first() |
| | | user = db.query(UserAppModel).filter(UserAppModel.user_id==sync_user.id, UserAppModel.app_type == RAGFLOW).first() |
| | | if not user: |
| | | logger.error("注册用户获取信息失败!") |
| | | return False |