From f942ce333e8a96d7464198958399b696c03f733f Mon Sep 17 00:00:00 2001 From: Automated Action Date: Mon, 26 May 2025 11:12:38 +0000 Subject: [PATCH] Fix OpenAPI schema generation and Pydantic model compatibility - Update Pydantic models to use model_config instead of Config class for v2 compatibility - Fix CORS settings to allow all origins in development mode - Fix circular imports in auth.py - Remove unused imports --- app/api/endpoints/auth.py | 8 ++++---- app/core/config.py | 4 ++-- app/schemas/cart.py | 10 ++++++---- app/schemas/category.py | 5 +++-- app/schemas/order.py | 15 +++++++++------ app/schemas/product.py | 10 ++++++---- app/schemas/user.py | 5 +++-- main.py | 2 +- 8 files changed, 34 insertions(+), 25 deletions(-) diff --git a/app/api/endpoints/auth.py b/app/api/endpoints/auth.py index dfa5bc8..3fa2d3f 100644 --- a/app/api/endpoints/auth.py +++ b/app/api/endpoints/auth.py @@ -11,6 +11,8 @@ from app.core.deps import get_current_user from app.db.session import get_db from app.models.user import User from app.schemas.token import Token +from app.schemas.user import User as UserSchema +from app.schemas.user import UserCreate from app.services import user as user_service router = APIRouter() @@ -61,7 +63,6 @@ def register_user( ) # Create user - from app.schemas.user import UserCreate user_in = UserCreate(email=form_data.username, password=form_data.password) user = user_service.create(db, obj_in=user_in) @@ -75,12 +76,11 @@ def register_user( } -@router.get("/me", response_model=Any) +@router.get("/me", response_model=UserSchema) def read_users_me( current_user: User = Depends(get_current_user), ) -> Any: """ Get current user """ - from app.schemas.user import User as UserSchema - return UserSchema.from_orm(current_user) \ No newline at end of file + return current_user \ No newline at end of file diff --git a/app/core/config.py b/app/core/config.py index b4432d2..d67bdf3 100644 --- a/app/core/config.py +++ b/app/core/config.py @@ -1,5 +1,5 @@ from typing import List -from pydantic import AnyHttpUrl, field_validator +from pydantic import field_validator from pydantic_settings import BaseSettings from pathlib import Path @@ -10,7 +10,7 @@ class Settings(BaseSettings): API_V1_STR: str = "/api/v1" # CORS Settings - CORS_ORIGINS: List[AnyHttpUrl] = [] + CORS_ORIGINS: List[str] = ["*"] # Allow all origins for development @field_validator("CORS_ORIGINS", mode="before") @classmethod diff --git a/app/schemas/cart.py b/app/schemas/cart.py index c85449a..f3b6e72 100644 --- a/app/schemas/cart.py +++ b/app/schemas/cart.py @@ -22,8 +22,9 @@ class CartItemInDBBase(CartItemBase): created_at: datetime updated_at: datetime - class Config: - orm_mode = True + model_config = { + "from_attributes": True + } class CartItem(CartItemInDBBase): @@ -48,8 +49,9 @@ class CartInDBBase(CartBase): created_at: datetime updated_at: datetime - class Config: - orm_mode = True + model_config = { + "from_attributes": True + } class Cart(CartInDBBase): diff --git a/app/schemas/category.py b/app/schemas/category.py index 2d162eb..d679b48 100644 --- a/app/schemas/category.py +++ b/app/schemas/category.py @@ -24,8 +24,9 @@ class CategoryInDBBase(CategoryBase): created_at: datetime updated_at: datetime - class Config: - orm_mode = True + model_config = { + "from_attributes": True + } # Additional properties to return via API diff --git a/app/schemas/order.py b/app/schemas/order.py index 90cf87c..aec12a8 100644 --- a/app/schemas/order.py +++ b/app/schemas/order.py @@ -21,8 +21,9 @@ class OrderItemInDBBase(OrderItemBase): created_at: datetime updated_at: datetime - class Config: - orm_mode = True + model_config = { + "from_attributes": True + } class OrderItem(OrderItemInDBBase): @@ -52,8 +53,9 @@ class OrderInDBBase(OrderBase): created_at: datetime updated_at: datetime - class Config: - orm_mode = True + model_config = { + "from_attributes": True + } class Order(OrderInDBBase): @@ -66,5 +68,6 @@ class OrderList(BaseModel): total_amount: float created_at: datetime - class Config: - orm_mode = True \ No newline at end of file + model_config = { + "from_attributes": True + } \ No newline at end of file diff --git a/app/schemas/product.py b/app/schemas/product.py index d20be53..f7e6e94 100644 --- a/app/schemas/product.py +++ b/app/schemas/product.py @@ -35,8 +35,9 @@ class ProductInDBBase(ProductBase): created_at: datetime updated_at: datetime - class Config: - orm_mode = True + model_config = { + "from_attributes": True + } # Additional properties to return via API @@ -53,5 +54,6 @@ class ProductList(BaseModel): category_id: str is_active: bool - class Config: - orm_mode = True \ No newline at end of file + model_config = { + "from_attributes": True + } \ No newline at end of file diff --git a/app/schemas/user.py b/app/schemas/user.py index 0c94db3..5acecd9 100644 --- a/app/schemas/user.py +++ b/app/schemas/user.py @@ -27,8 +27,9 @@ class UserInDBBase(UserBase): created_at: datetime updated_at: datetime - class Config: - orm_mode = True + model_config = { + "from_attributes": True + } # Additional properties to return via API diff --git a/main.py b/main.py index d99e634..5a96dfb 100644 --- a/main.py +++ b/main.py @@ -17,7 +17,7 @@ app = FastAPI( # Set CORS middleware app.add_middleware( CORSMiddleware, - allow_origins=settings.CORS_ORIGINS, + allow_origins=["*"], # Allow all origins for development allow_credentials=True, allow_methods=["*"], allow_headers=["*"],