70 lines
1.9 KiB
Python

from datetime import date
from typing import Optional
from pydantic import BaseModel, EmailStr, Field
from app.domain.entities.applicant_profiles import ApplicantProfileRead
from app.domain.entities.roles import RoleRead
class UserRegister(BaseModel):
first_name: str = Field(max_length=250)
last_name: str = Field(max_length=250)
patronymic: Optional[str] = Field(default=None, max_length=250)
login: str = Field(max_length=250)
email: EmailStr = Field(max_length=250)
birthdate: date
password: str = Field(min_length=8)
repeat_password: str = Field(min_length=8)
role_id: int
class UserCreate(BaseModel):
first_name: str = Field(max_length=250)
last_name: str = Field(max_length=250)
patronymic: Optional[str] = Field(default=None, max_length=250)
login: str = Field(max_length=250)
email: Optional[EmailStr] = None
birthdate: date
password: str = Field(min_length=8)
repeat_password: str = Field(min_length=8)
role_id: Optional[int] = None
is_admin: bool = False
class UserUpdate(BaseModel):
first_name: Optional[str] = Field(default=None, max_length=250)
last_name: Optional[str] = Field(default=None, max_length=250)
patronymic: Optional[str] = Field(default=None, max_length=250)
email: Optional[EmailStr] = None
birthdate: Optional[date] = None
class PasswordChangeRequest(BaseModel):
password: str = Field(min_length=8)
repeat_password: str = Field(min_length=8)
class UserActivate(BaseModel):
is_activated: bool
user_id: int
class UserRead(BaseModel):
id: int
first_name: str
last_name: str
patronymic: Optional[str]
login: str
email: Optional[EmailStr]
birthdate: date
is_activated: bool
is_admin: bool
role_id: int
role: RoleRead
applicant_profile: Optional[ApplicantProfileRead] = None
class Config:
from_attributes = True