From 48f0c4364e912cca1b06e6e377dba02373b66e94 Mon Sep 17 00:00:00 2001 From: Automated Action Date: Tue, 17 Jun 2025 03:09:23 +0000 Subject: [PATCH] Replace EmailStr with custom email validation to avoid dependency issues --- app/schemas/user.py | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/app/schemas/user.py b/app/schemas/user.py index f3a2390..be714ce 100644 --- a/app/schemas/user.py +++ b/app/schemas/user.py @@ -1,20 +1,32 @@ from typing import Optional - -from pydantic import BaseModel, EmailStr +import re +from pydantic import BaseModel, field_validator from app.models.user import UserRole +# Remove EmailStr import and use custom validation instead + # Shared properties class UserBase(BaseModel): - email: Optional[EmailStr] = None + email: Optional[str] = None is_active: Optional[bool] = True role: Optional[UserRole] = None + + @field_validator('email') + @classmethod + def validate_email(cls, v): + if v is None: + return v + pattern = r'^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$' + if not re.match(pattern, v): + raise ValueError('Invalid email format') + return v # Properties to receive via API on creation class UserCreate(UserBase): - email: EmailStr + email: str password: str role: UserRole = UserRole.USER