operation_log.py 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. from typing import Optional, List, Any, Dict
  2. from datetime import datetime
  3. from pydantic import BaseModel
  4. from enum import Enum
  5. class ActionType(str, Enum):
  6. MANUAL_ADD = "MANUAL_ADD"
  7. DELETE = "DELETE"
  8. UPDATE = "UPDATE"
  9. IMPORT = "IMPORT"
  10. DISABLE = "DISABLE"
  11. ENABLE = "ENABLE"
  12. RESET_PASSWORD = "RESET_PASSWORD"
  13. CHANGE_ROLE = "CHANGE_ROLE"
  14. TRANSFER = "TRANSFER"
  15. VIEW_SECRET = "VIEW_SECRET"
  16. REGENERATE_SECRET = "REGENERATE_SECRET"
  17. SYNC_M2M = "SYNC_M2M"
  18. SYNC = "SYNC"
  19. ORG_CREATE = "ORG_CREATE"
  20. ORG_UPDATE = "ORG_UPDATE"
  21. class OperationLogBase(BaseModel):
  22. app_id: Optional[int] = None
  23. action_type: ActionType
  24. target_mobile: Optional[str] = None
  25. ip_address: Optional[str] = None
  26. details: Optional[Dict[str, Any]] = None
  27. class OperationLogCreate(OperationLogBase):
  28. operator_id: int
  29. target_user_id: Optional[int] = None
  30. class OperationLogResponse(OperationLogBase):
  31. id: int
  32. operator_id: int
  33. operator_mobile: Optional[str] = None # Enriched
  34. target_user_id: Optional[int] = None
  35. created_at: datetime
  36. class Config:
  37. from_attributes = True
  38. class OperationLogList(BaseModel):
  39. total: int
  40. items: List[OperationLogResponse]