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
This commit is contained in:
Automated Action 2025-05-26 11:12:38 +00:00
parent 538a985c8e
commit f942ce333e
8 changed files with 34 additions and 25 deletions

View File

@ -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)
return current_user

View File

@ -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

View File

@ -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):

View File

@ -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

View File

@ -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
model_config = {
"from_attributes": True
}

View File

@ -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
model_config = {
"from_attributes": True
}

View File

@ -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

View File

@ -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=["*"],