fix: migrate FastAPI-bound BaseModels to pydantic v2 to fix login

This commit is contained in:
9qeklajc
2026-04-26 22:57:31 +02:00
parent 92d581573d
commit 884bae9fc4
4 changed files with 8 additions and 7 deletions
+1 -1
View File
@@ -6,7 +6,7 @@ from typing import Annotated, NoReturn
from fastapi import APIRouter, Depends, Header, HTTPException
from fastapi.responses import JSONResponse
from pydantic.v1 import BaseModel
from pydantic import BaseModel
from sqlmodel import col, select, update
from .auth import get_billing_key, validate_bearer_key
+4 -4
View File
@@ -5,7 +5,7 @@ from datetime import datetime, timezone
from pathlib import Path
from fastapi import APIRouter, Depends, HTTPException, Query, Request
from pydantic.v1 import BaseModel
from pydantic import BaseModel, RootModel
from sqlmodel import select
from ..payment.models import _row_to_model, list_models
@@ -142,8 +142,8 @@ async def get_settings(request: Request) -> dict:
return data
class SettingsUpdate(BaseModel):
__root__: dict[str, object]
class SettingsUpdate(RootModel[dict[str, object]]):
pass
class PasswordUpdate(BaseModel):
@@ -154,7 +154,7 @@ class PasswordUpdate(BaseModel):
@admin_router.patch("/api/settings", dependencies=[Depends(require_admin_api)])
async def update_settings(request: Request, update: SettingsUpdate) -> dict:
# Remove sensitive fields from general settings update
settings_data = update.__root__.copy()
settings_data = update.root.copy()
sensitive_fields = ["admin_password", "upstream_api_key", "nsec"]
for field in sensitive_fields:
if field in settings_data:
+1 -1
View File
@@ -3,7 +3,7 @@ import secrets
import time
from fastapi import APIRouter, Depends, HTTPException
from pydantic.v1 import BaseModel, Field
from pydantic import BaseModel, Field
from sqlmodel import select
from sqlmodel.ext.asyncio.session import AsyncSession
+2 -1
View File
@@ -4,6 +4,7 @@ import random
import httpx
from fastapi import APIRouter, Depends
from pydantic import BaseModel as V2BaseModel
from pydantic.v1 import BaseModel
from sqlmodel.ext.asyncio.session import AsyncSession
@@ -405,7 +406,7 @@ async def update_sats_pricing() -> None:
logger.error(f"Error updating sats pricing: {e}")
class ModelTestRequest(BaseModel):
class ModelTestRequest(V2BaseModel):
model_id: str
endpoint_type: str
request_data: dict