| | |
| | | from app.models.user import PageParameter |
| | | from app.models.user_model import UserModel |
| | | from app.service.group import create_group, group_list, edit_group_data, delete_group_data, get_group_users, \ |
| | | save_user_to_group |
| | | save_user_to_group, save_group_resource |
| | | |
| | | group_router = APIRouter() |
| | | |
| | |
| | | return Response(code=200, msg="success", data={}) |
| | | |
| | | |
| | | @group_router.post("/group_resource", response_model=Response) |
| | | @group_router.put("/group_resource", response_model=Response) |
| | | async def group_resource(group_resource: GroupResource, current_user: UserModel = Depends(get_current_user), |
| | | db=Depends(get_db)): |
| | | 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) |
| | | # if not is_success: |
| | | # return Response(code=500, msg="save user to group failure", data={}) |
| | | is_success = await save_group_resource(db, current_user.id, group_resource.id, group_resource.agents, 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={}) |
| | |
| | | , Column('group_id', Integer, ForeignKey('group.id', ondelete='CASCADE')) |
| | | , Column('dialog_id', String(36), ForeignKey('dialogs.id', ondelete='CASCADE'))) |
| | | |
| | | group_agent_table = Table('group_agent', Base.metadata |
| | | group_agent_table = Table('group_canvas', Base.metadata |
| | | , Column('group_id', Integer, ForeignKey('group.id', ondelete='CASCADE')) |
| | | , Column('agent_id', String(36), ForeignKey('canvas.id', ondelete='CASCADE'))) |
| | | , Column('canvas_id', String(36), ForeignKey('canvas.id', ondelete='CASCADE'))) |
| | | |
| | | group_llm_table = Table('group_llm', Base.metadata |
| | | , Column('group_id', Integer, ForeignKey('group.id', ondelete='CASCADE')) |
| | |
| | | |
| | | agents = relationship('CanvasModel', |
| | | secondary=group_agent_table, |
| | | backref=backref('groups', lazy='dynamic'), |
| | | lazy="dynamic") |
| | | backref=backref('groups', lazy='dynamic')) |
| | | |
| | | llms = relationship('CommonLlmModel', |
| | | secondary=group_llm_table, |
| | | backref=backref('groups', lazy='dynamic'), |
| | | lazy="dynamic") |
| | | backref=backref('groups', lazy='dynamic')) |
| | | |
| | | unified_agents = relationship('UnifiedAgentModel', |
| | | secondary=group_unified_agent_table, |
| | | backref=backref('roles', lazy='dynamic'), |
| | | lazy="dynamic") |
| | | backref=backref('groups', lazy='dynamic')) |
| | | def to_dict(self): |
| | | return { |
| | | 'groupId': self.id, |
| | |
| | | from app.config.config import settings |
| | | from app.models import CanvasModel, DialogModel, KnowledgeModel |
| | | from app.models.group_model import GroupModel |
| | | from app.models.user_model import UserModel |
| | | from app.service.ragflow import RagflowService |
| | |
| | | |
| | | 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) |
| | | if role_key != "admin": |
| | | query.filter(GroupModel.creator==user_id) |
| | | query = db.query(GroupModel).filter(GroupModel.creator==user_id) |
| | | # 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( |
| | |
| | | except Exception as e: |
| | | logger.error(e) |
| | | return False |
| | | return True |
| | | |
| | | async def save_group_resource(db, user_id, group_id, agents, 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.dialogs = [db.get(DialogModel, user) for user in dialogs] |
| | | group.knowledges = [db.get(KnowledgeModel, user) for user in knowledges] |
| | | db.commit() |
| | | except Exception as e: |
| | | logger.error(e) |
| | | return False |
| | | return True |
| | |
| | | |
| | | async def role_list(db, page_size: int, page_index: int, keyword: str, role_key:str, user_id): |
| | | query = db.query(RoleModel) |
| | | if role_key != "admin": |
| | | query.filter(RoleModel.creator==user_id) |
| | | # if role_key != "admin": |
| | | # query.filter(RoleModel.creator==user_id) |
| | | if keyword: |
| | | query = query.filter(RoleModel.name.like('%{}%'.format(keyword))) |
| | | roles = query.order_by(RoleModel.id.desc()).limit(page_size).offset( |
| | |
| | | |
| | | |
| | | async def get_user_list(db, page_index: int, page_size: int, keyword: str, role_key:str, user_id): |
| | | query = db.query(UserModel) |
| | | if role_key != "admin": |
| | | query.filter(UserModel.creator==user_id) |
| | | query = db.query(UserModel).filter(UserModel.permission!="admin") |
| | | # if role_key != "admin": |
| | | # query.filter(UserModel.creator==user_id) |
| | | if keyword: |
| | | query = query.filter(UserModel.group_name.like('%{}%'.format(keyword))) |
| | | users = query.order_by(UserModel.id.desc()).limit(page_size).offset( |