Files
py-ailbl-user-email/apps/schemas.py

37 lines
1.3 KiB
Python
Raw Permalink Normal View History

2025-12-06 05:58:48 +07:00
from pydantic import BaseModel, Field, EmailStr, root_validator
2025-12-02 20:45:11 +07:00
from typing import Optional
2025-12-06 05:58:48 +07:00
# Validate dau vao email
2025-12-02 20:45:11 +07:00
2025-12-06 14:35:57 +00:00
class UserEmailRequest(BaseModel): #Pased luu gia tri validate email
2025-12-06 05:58:48 +07:00
email: EmailStr = Field(..., description="Email address")
provider: Optional[str] = Field(None, description="Email service provider")
is_primary: Optional[bool] = Field(None, description= "is primary email ")
2025-12-02 20:45:11 +07:00
2025-12-06 05:58:48 +07:00
@root_validator(pre=True)
def auto_detect_provider(cls, values):
email = values.get("email")
provider = values.get("provider")
2025-12-02 20:45:11 +07:00
2025-12-06 05:58:48 +07:00
if not provider and email:
domain_part = email.split('@')[-1]
values["provider"] = domain_part.split('.')[0]
2025-12-02 20:45:11 +07:00
2025-12-06 05:58:48 +07:00
return values
2025-12-02 20:45:11 +07:00
2025-12-06 05:58:48 +07:00
class UserEmailUpdateRequest(BaseModel):
email: Optional[EmailStr] = Field(None, description="Email address")
provider: Optional[str] = Field(None, description="Email service provider")
is_primary: Optional[bool] = Field(None, description= "is primary email ")
2025-12-02 20:45:11 +07:00
2025-12-06 05:58:48 +07:00
@root_validator(pre=True)
def auto_detect_provider(cls, values):
email = values.get("email")
provider = values.get("provider")
if not provider and email:
domain_part = email.split('@')[-1]
values["provider"] = domain_part.split('.')[0]
return values