mirror of
https://gh-proxy.org/https://github.com/klinsmaya/SQLBot.git
synced 2026-11-08 01:06:59 +08:00
Merge branch 'main' of https://github.com/dataease/SQLBot
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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):
|
||||
|
||||
@@ -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 ''))
|
||||
|
||||
@@ -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,6 +1,6 @@
|
||||
[project]
|
||||
name = "sqlbot"
|
||||
version = "0.1.0"
|
||||
version = "1.0.0"
|
||||
description = ""
|
||||
requires-python = ">=3.10,<3.13"
|
||||
dependencies = [
|
||||
|
||||
Reference in New Issue
Block a user