Add File
This commit is contained in:
39
backend/apps/system/crud/assistant_manage.py
Normal file
39
backend/apps/system/crud/assistant_manage.py
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
|
||||||
|
|
||||||
|
from fastapi import FastAPI, Request
|
||||||
|
from sqlmodel import Session, select
|
||||||
|
from starlette.middleware.cors import CORSMiddleware
|
||||||
|
from apps.system.schemas.system_schema import AssistantBase
|
||||||
|
from common.core.config import settings
|
||||||
|
from apps.system.models.system_model import AssistantModel
|
||||||
|
from common.utils.time import get_timestamp
|
||||||
|
|
||||||
|
|
||||||
|
def dynamic_upgrade_cors(request: Request, session: Session):
|
||||||
|
list_result = session.exec(select(AssistantModel).order_by(AssistantModel.create_time)).all()
|
||||||
|
seen = set()
|
||||||
|
unique_domains = []
|
||||||
|
for item in list_result:
|
||||||
|
if item.domain:
|
||||||
|
for domain in item.domain.split(','):
|
||||||
|
domain = domain.strip()
|
||||||
|
if domain and domain not in seen:
|
||||||
|
seen.add(domain)
|
||||||
|
unique_domains.append(domain)
|
||||||
|
app: FastAPI = request.app
|
||||||
|
cors_middleware = None
|
||||||
|
for middleware in app.user_middleware:
|
||||||
|
if middleware.cls == CORSMiddleware:
|
||||||
|
cors_middleware = middleware
|
||||||
|
break
|
||||||
|
if cors_middleware:
|
||||||
|
updated_origins = list(set(settings.all_cors_origins + unique_domains))
|
||||||
|
cors_middleware.kwargs['allow_origins'] = updated_origins
|
||||||
|
|
||||||
|
|
||||||
|
async def save(request: Request, session: Session, creator: AssistantBase):
|
||||||
|
db_model = AssistantModel.model_validate(creator)
|
||||||
|
db_model.create_time = get_timestamp()
|
||||||
|
session.add(db_model)
|
||||||
|
session.commit()
|
||||||
|
dynamic_upgrade_cors(request=request, session=session)
|
||||||
Reference in New Issue
Block a user