This commit is contained in:
dataeaseShu
2025-08-07 17:51:54 +08:00
5 changed files with 31 additions and 7 deletions
+3 -1
View File
@@ -273,7 +273,9 @@ async def upload_excel(session: SessionDep, file: UploadFile = File(...)):
for sheet_name in sheet_names:
tableName = f"{sheet_name}_{hashlib.sha256(uuid.uuid4().bytes).hexdigest()[:10]}"
sheets.append({"tableName": tableName, "tableComment": ""})
df = pd.read_excel(save_path, sheet_name=sheet_name, engine='calamine')
df_temp = pd.read_excel(path, nrows=5)
non_empty_cols = df_temp.columns[df_temp.notna().any()].tolist()
df = pd.read_excel(save_path, sheet_name=sheet_name, engine='calamine', usecols=non_empty_cols)
insert_pg(df, tableName, engine)
# os.remove(save_path)
+2 -4
View File
@@ -1,6 +1,5 @@
from common.core.deps import SessionDep
from ..models.datasource import CoreDatasource, CreateDatasource, CoreTable, CoreField, ColumnSchema
from sqlalchemy import and_
from ..models.datasource import CoreField
def delete_field_by_ds_id(session: SessionDep, id: int):
@@ -9,8 +8,7 @@ def delete_field_by_ds_id(session: SessionDep, id: int):
def get_fields_by_table_id(session: SessionDep, id: int):
return session.query(CoreField).filter(CoreField.table_id == id).order_by(
CoreField.field_name.asc()).all()
return session.query(CoreField).filter(CoreField.table_id == id).all()
def update_field(session: SessionDep, item: CoreField):
+2 -1
View File
@@ -12,6 +12,7 @@ from common.core.sqlbot_cache import clear_cache
from common.utils.time import get_timestamp
from starlette.middleware.cors import CORSMiddleware
from common.core.config import settings
from common.utils.utils import get_origin_from_referer
router = APIRouter(tags=["system/assistant"], prefix="/system/assistant")
@router.get("/info/{id}")
@@ -23,7 +24,7 @@ async def info(request: Request, response: Response, session: SessionDep, trans:
raise RuntimeError(f"assistant application not exist")
db_model = AssistantModel.model_validate(db_model)
response.headers["Access-Control-Allow-Origin"] = db_model.domain
origin = request.headers.get("origin") or request.headers.get("referer")
origin = request.headers.get("origin") or get_origin_from_referer(request)
origin = origin.rstrip('/')
if origin != db_model.domain:
raise RuntimeError(trans('i18n_embedded.invalid_origin', origin = origin or ''))
+23
View File
@@ -6,6 +6,9 @@ import logging
from datetime import datetime, timedelta, timezone
from logging.handlers import RotatingFileHandler
from pathlib import Path
from urllib.parse import urlparse
from fastapi import Request
from common.core.config import settings
from typing import Optional
@@ -240,4 +243,24 @@ def prepare_model_arg(origin_arg: str):
return json.loads(origin_arg)
except:
return origin_arg
def get_origin_from_referer(request: Request):
referer = request.headers.get("referer")
if not referer:
return None
try:
parsed = urlparse(referer)
if not parsed.scheme or not parsed.hostname:
return None
port = parsed.port
if port:
if (parsed.scheme == "http" and port != 80) or \
(parsed.scheme == "https" and port != 443):
return f"{parsed.scheme}://{parsed.hostname}:{port}"
return f"{parsed.scheme}://{parsed.hostname}"
except Exception as e:
SQLBotLogUtil.error(f"解析 Referer 出错: {e}")
return referer
+1 -1
View File
@@ -1,6 +1,6 @@
[project]
name = "sqlbot"
version = "0.1.0"
version = "1.0.0"
description = ""
requires-python = ">=3.10,<3.13"
dependencies = [