Merge branch 'master' of http://192.168.5.5:10010/r/rag-gateway
| | |
| | | import uuid |
| | | |
| | | from Log import logger |
| | | from app.config.const import DEPT_STATUS_ON |
| | | from app.models import OrganizationModel |
| | | from app.models.resource_model import ResourceModel |
| | | from app.models.role_model import RoleModel |
| | |
| | | total = query.count() |
| | | roles = query.order_by(RoleModel.created_at.desc()).limit(page_size).offset( |
| | | (page_index - 1) * page_size).all() |
| | | return {"total": total, "rows": [role.to_json() for role in roles]} |
| | | return {"total": total, "rows": [role.to_json() for role in roles if role.status == DEPT_STATUS_ON]} |
| | | |
| | | |
| | | async def create_role(db, role_name: str, description: str, role_key, data_scope, user_id): |
| | |
| | | knowledge_dict = {} |
| | | user = db.query(UserModel).filter_by(id=user_id).first() |
| | | parent_id = "" |
| | | # print(111111111111111) |
| | | async def role_resource(role_set, permissions, roles): |
| | | |
| | | async def role_resource_type(role_set, permissions, roles, type): |
| | | nonlocal parent_id |
| | | for role in roles: |
| | | if role.id not in role_set: |
| | |
| | | |
| | | for r in role.resources: |
| | | if r.resource_type_id != "1": |
| | | # if not r.resource_id: |
| | | # parent_id = r.id |
| | | # continue |
| | | permissions[r.id] = r.to_router_dict() |
| | | permission_dict = r.to_router_dict() |
| | | permission_dict["type"] = type |
| | | permissions[r.id] = permission_dict |
| | | |
| | | await role_resource(role_set, permissions, user.roles) |
| | | await role_resource_type(role_set, permissions, user.roles, "user") |
| | | for ogt in user.organizations: |
| | | if ogt.roles: |
| | | await role_resource(role_set, permissions, ogt.roles) |
| | | await role_resource_type(role_set, permissions, ogt.roles, "org") |
| | | parent_ogt = ogt.parent |
| | | while parent_ogt: |
| | | |
| | | if parent_ogt.id not in dept_set: |
| | | await role_resource(role_set, permissions, parent_ogt.roles) |
| | | await role_resource_type(role_set, permissions, parent_ogt.roles, "org") |
| | | dept_set.add(parent_ogt.id) |
| | | |
| | | parent_ogt = parent_ogt.parent |
| | |
| | | async def get_user_dept(db, user_id): |
| | | res = {} |
| | | user = db.query(UserModel).filter_by(id=user_id).first() |
| | | res["rows"] = [i.to_dict() for i in user.organizations] |
| | | res["rows"] = [i.to_dict() for i in user.organizations if i.status == DEPT_STATUS_ON] |
| | | return res |
| | | |
| | | |
New file |
| | |
| | | import os.path |
| | | from datetime import datetime, timedelta |
| | | |
| | | |
| | | def delete_file_after_delay(): |
| | | path = "data/output" |
| | | data_dir = os.path.dirname(path) |
| | | if not os.path.exists(data_dir): |
| | | return |
| | | if not os.path.exists(path): |
| | | return |
| | | now = datetime.now() |
| | | five_minutes_ago = now - timedelta(minutes=5) |
| | | for filename in os.listdir(path): |
| | | file_path = os.path.join(path, filename) |
| | | if os.path.isfile(file_path): |
| | | creation_time = os.path.getctime(file_path) |
| | | file_creation_datetime = datetime.fromtimestamp(creation_time) |
| | | if file_creation_datetime < five_minutes_ago: |
| | | os.remove(file_path) |
| | | print(f"定时删除文件: {file_path}") |
| | |
| | | import_type_table(db, node) |
| | | print("add resourceType record successfully") |
| | | else: |
| | | print("sync resources successfully") |
| | | print("sync resourcesType successfully") |
| | | if db.query(ResourceModel).count() == 0: |
| | | with open(os.path.join(ENV_CONF_PATH, "resource.json"), 'r', encoding='utf-8') as file: |
| | | json_data = json.load(file) |
| | |
| | | import random |
| | | import shutil |
| | | import string |
| | | from datetime import datetime |
| | | |
| | | from datetime import datetime |
| | | from openpyxl import load_workbook |
| | | |
| | | |
| | |
| | | template_excel.save(output_path) |
| | | template_excel.close() |
| | | |
| | | # 合并完成后删除无用文件 |
| | | try: |
| | | for filename in os.listdir(file_path): |
| | | file_path_full = os.path.join(file_path, filename) |
| | | try: |
| | | if os.path.isfile(file_path_full) or os.path.islink(file_path_full): |
| | | os.unlink(file_path_full) |
| | | elif os.path.isdir(file_path_full): |
| | |
| | | from app.api.group import group_router |
| | | from app.api.role import role_router |
| | | from app.models.base_model import init_db |
| | | from app.task.delete_execl_file import delete_file_after_delay |
| | | # from app.models.base_model import init_db |
| | | from app.task.fetch_agent import sync_agents, initialize_agents, sync_agents_v2, sync_knowledge, \ |
| | | sync_resources_from_json |
| | |
| | | # 创建调度器 |
| | | scheduler = BackgroundScheduler() |
| | | scheduler.add_job(sync_agents_v2, 'interval', minutes=60, id="sync_resource_data") |
| | | scheduler.add_job(delete_file_after_delay, 'interval', minutes=10, id="delete_file_after_delay") |
| | | scheduler.start() |
| | | |
| | | app.include_router(auth_router, prefix='/api/auth', tags=["auth"]) |