Datavision / backend /app /schemas /admin.py
DataVision CI/CD Bot
release: clean production build for HuggingFace Space
09801ca
Raw
History Blame Contribute Delete
1.82 kB
"""
Admin Schemas — Request/response models for admin operations.
"""
from datetime import datetime
from typing import Optional
from pydantic import BaseModel, Field
class AdminDashboardStats(BaseModel):
"""Dashboard statistics for the admin panel."""
total_users: int = 0
active_users: int = 0
total_projects: int = 0
total_models: int = 0
total_datasets: int = 0
total_experiments: int = 0
total_training_jobs: int = 0
pending_jobs: int = 0
running_jobs: int = 0
total_api_keys: int = 0
storage_used_bytes: int = 0
class AdminUserListItem(BaseModel):
"""User summary for admin user list."""
id: str
email: str
full_name: Optional[str] = None
company_name: Optional[str] = None
is_active: bool
is_verified: bool
roles: list[str] = []
login_count: int = 0
last_login_at: Optional[datetime] = None
created_at: Optional[datetime] = None
model_config = {"from_attributes": True}
class AdminUserUpdate(BaseModel):
"""Admin-level user update."""
full_name: Optional[str] = None
company_name: Optional[str] = None
is_active: Optional[bool] = None
is_verified: Optional[bool] = None
roles: Optional[list[str]] = None
class AuditLogEntry(BaseModel):
"""Audit log entry for admin view."""
id: str
user_id: Optional[str] = None
action: str
resource_type: str
resource_id: Optional[str] = None
ip_address: Optional[str] = None
details: dict = {}
created_at: Optional[datetime] = None
model_config = {"from_attributes": True}
class RoleInfo(BaseModel):
"""Role information."""
id: str
name: str
display_name: str
description: Optional[str] = None
hierarchy_level: int
is_system: bool
model_config = {"from_attributes": True}