user.py 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. from typing import Optional
  2. from pydantic import BaseModel, EmailStr
  3. from datetime import datetime
  4. from typing import List
  5. class UserBase(BaseModel):
  6. mobile: str
  7. status: str = "PENDING"
  8. role: Optional[str] = "ORDINARY_USER"
  9. is_deleted: int = 0
  10. class UserCreate(UserBase):
  11. password: str
  12. admin_password: Optional[str] = None
  13. class UserRegister(BaseModel):
  14. mobile: str
  15. password: str
  16. sms_code: str # Added field
  17. class PromoteUserRequest(BaseModel):
  18. password: str
  19. captcha_id: str
  20. captcha_code: str
  21. class UserUpdate(BaseModel):
  22. password: Optional[str] = None
  23. status: Optional[str] = None
  24. role: Optional[str] = None
  25. is_deleted: Optional[int] = None
  26. admin_password: Optional[str] = None
  27. class UserSyncRequest(BaseModel):
  28. mobile: str
  29. password: Optional[str] = None
  30. status: Optional[str] = None
  31. mapped_key: Optional[str] = None # External User ID
  32. mapped_email: Optional[str] = None # External User Email
  33. is_active: Optional[bool] = None # True=Active, False=Disabled. None=No Change
  34. class UserInDBBase(UserBase):
  35. id: int
  36. created_at: datetime
  37. updated_at: datetime
  38. class Config:
  39. from_attributes = True
  40. class User(UserInDBBase):
  41. pass
  42. class UserInDB(UserInDBBase):
  43. password_hash: str
  44. class UserList(BaseModel):
  45. total: int
  46. items: List[User]