LinkDesk/backend/schemas/user.py

75 lines
1.4 KiB
Python

from pydantic import BaseModel, EmailStr
from typing import Optional
from datetime import datetime
from models.user import UserRole
class UserBase(BaseModel):
email: EmailStr
first_name: str
last_name: str
class UserCreate(UserBase):
password: str
class UserUpdate(BaseModel):
first_name: Optional[str] = None
last_name: Optional[str] = None
role: Optional[UserRole] = None
is_admin: Optional[bool] = None
is_approved: Optional[bool] = None
class UserResponse(UserBase):
id: int
role: UserRole
is_admin: bool
is_approved: bool
avatar_url: Optional[str] = None
created_at: datetime
updated_at: datetime
class Config:
from_attributes = True
class UserApproval(BaseModel):
is_approved: bool
class UserRoleUpdate(BaseModel):
role: UserRole
class UserAdminUpdate(BaseModel):
is_admin: bool
class UserAdminCreate(BaseModel):
email: EmailStr
password: str
first_name: str
last_name: str
role: UserRole
is_approved: bool = True
is_admin: bool = False
class UserAdminEdit(BaseModel):
first_name: Optional[str] = None
last_name: Optional[str] = None
email: Optional[EmailStr] = None
role: Optional[UserRole] = None
is_approved: Optional[bool] = None
is_admin: Optional[bool] = None
class UserPasswordReset(BaseModel):
new_password: str
class UserPasswordChange(BaseModel):
current_password: str
new_password: str