operation_log.py 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  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. class OperationLogBase(BaseModel):
  20. app_id: Optional[int] = None
  21. action_type: ActionType
  22. target_mobile: Optional[str] = None
  23. ip_address: Optional[str] = None
  24. details: Optional[Dict[str, Any]] = None
  25. class OperationLogCreate(OperationLogBase):
  26. operator_id: int
  27. target_user_id: Optional[int] = None
  28. class OperationLogResponse(OperationLogBase):
  29. id: int
  30. operator_id: int
  31. operator_mobile: Optional[str] = None # Enriched
  32. target_user_id: Optional[int] = None
  33. created_at: datetime
  34. class Config:
  35. from_attributes = True
  36. class OperationLogList(BaseModel):
  37. total: int
  38. items: List[OperationLogResponse]