Renamed `event_theme` and `test_user_schema` file paths and imports to follow consistent plural naming conventions. This improves code clarity and aligns file and import naming across the project.
51 lines
1.4 KiB
Python
51 lines
1.4 KiB
Python
# app/schemas/event_themes.py
|
|
from typing import Dict, Optional
|
|
from uuid import UUID # Add this import
|
|
from pydantic import BaseModel, Field, validator, field_validator
|
|
|
|
|
|
class EventThemeBase(BaseModel):
|
|
name: str = Field(..., min_length=1) # Ensures name is not empty
|
|
description: Optional[str] = None
|
|
preview_image_url: Optional[str] = None
|
|
color_palette: Dict[str, str] = Field(..., min_items=1) # Ensures at least one color
|
|
fonts: Dict[str, str] = Field(..., min_items=1) # Ensures at least one font
|
|
|
|
@field_validator('color_palette')
|
|
def validate_color_palette(cls, v):
|
|
if not v:
|
|
raise ValueError("color_palette cannot be empty")
|
|
return v
|
|
|
|
@field_validator('fonts')
|
|
def validate_fonts(cls, v):
|
|
if not v:
|
|
raise ValueError("fonts cannot be empty")
|
|
return v
|
|
|
|
|
|
class EventThemeCreate(EventThemeBase):
|
|
pass
|
|
|
|
|
|
class EventThemeUpdate(EventThemeBase):
|
|
name: Optional[str] = None
|
|
color_palette: Optional[Dict[str, str]] = None
|
|
fonts: Optional[Dict[str, str]] = None
|
|
|
|
|
|
# Move EventThemeInDBBase before EventThemeResponse
|
|
class EventThemeInDBBase(EventThemeBase):
|
|
id: UUID # Changed from str to UUID to match the model
|
|
|
|
class Config:
|
|
from_attributes = True
|
|
|
|
|
|
# Now EventThemeResponse can properly inherit from EventThemeInDBBase
|
|
class EventThemeResponse(EventThemeInDBBase):
|
|
pass
|
|
|
|
|
|
class EventTheme(EventThemeInDBBase):
|
|
pass |