user.py 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  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. name: Optional[str] = None
  8. english_name: Optional[str] = None
  9. status: str = "PENDING"
  10. role: Optional[str] = "ORDINARY_USER"
  11. is_deleted: int = 0
  12. class UserCreate(UserBase):
  13. password: str
  14. admin_password: Optional[str] = None
  15. class UserRegister(BaseModel):
  16. mobile: str
  17. password: str
  18. sms_code: str # Added field
  19. name: str # Chinese Name
  20. class PromoteUserRequest(BaseModel):
  21. password: str
  22. captcha_id: str
  23. captcha_code: str
  24. class UserUpdate(BaseModel):
  25. password: Optional[str] = None
  26. mobile: Optional[str] = None
  27. name: Optional[str] = None
  28. english_name: Optional[str] = None
  29. status: Optional[str] = None
  30. role: Optional[str] = None
  31. is_deleted: Optional[int] = None
  32. admin_password: Optional[str] = None
  33. class UserSyncRequest(BaseModel):
  34. mobile: str
  35. password: Optional[str] = None
  36. status: Optional[str] = None
  37. mapped_key: Optional[str] = None # External User ID
  38. mapped_email: Optional[str] = None # External User Email
  39. is_active: Optional[bool] = None # True=Active, False=Disabled. None=No Change
  40. class UserInDBBase(UserBase):
  41. id: int
  42. created_at: datetime
  43. updated_at: datetime
  44. class Config:
  45. from_attributes = True
  46. class User(UserInDBBase):
  47. pass
  48. class UserInDB(UserInDBBase):
  49. password_hash: str
  50. class UserList(BaseModel):
  51. total: int
  52. items: List[User]
  53. class UserSyncSimple(BaseModel):
  54. mobile: str
  55. name: Optional[str] = None
  56. english_name: Optional[str] = None
  57. class Config:
  58. from_attributes = True
  59. class UserSyncList(BaseModel):
  60. total: int
  61. items: List[UserSyncSimple]