|
7 | 7 | from app.db.crud.admin import get_admin |
8 | 8 | from app.db.crud.general import get_system_usage |
9 | 9 | from app.db.crud.user import count_online_users, get_users_count_by_status |
10 | | -from app.db.models import UserStatus |
11 | | -from app.models.admin import AdminDetails |
| 10 | +from app.db.models import Admin, UserStatus |
| 11 | +from app.models.admin import AdminDetails, AdminRoleData |
12 | 12 | from app.models.system import InboundSummary, SystemStats |
13 | 13 | from app.operation.permissions import PermissionDenied, enforce_permission, is_scope_all |
14 | 14 | from app.utils.system import cpu_usage, disk_usage, get_uptime, memory_usage |
15 | 15 |
|
16 | 16 | from . import BaseOperation |
17 | 17 |
|
18 | 18 |
|
| 19 | +def _system_admin_details(db_admin: Admin) -> AdminDetails: |
| 20 | + return AdminDetails( |
| 21 | + id=db_admin.id, |
| 22 | + username=db_admin.username, |
| 23 | + used_traffic=int(db_admin.used_traffic or 0), |
| 24 | + data_limit=db_admin.data_limit, |
| 25 | + status=db_admin.status, |
| 26 | + role=AdminRoleData.model_validate(db_admin.role) if db_admin.role is not None else None, |
| 27 | + ) |
| 28 | + |
| 29 | + |
19 | 30 | class SystemOperation(BaseOperation): |
20 | 31 | @staticmethod |
21 | 32 | async def get_system_stats(db: AsyncSession, admin: AdminDetails, admin_username: str | None = None) -> SystemStats: |
@@ -43,7 +54,7 @@ async def get_system_stats(db: AsyncSession, admin: AdminDetails, admin_username |
43 | 54 | if admin.is_owner or can_read_admins: |
44 | 55 | db_admin = await get_admin(db, admin_username, load_users=False, load_usage_logs=False) |
45 | 56 | if db_admin is not None: |
46 | | - admin_param = AdminDetails.model_validate(db_admin) |
| 57 | + admin_param = _system_admin_details(db_admin) |
47 | 58 | else: |
48 | 59 | admin_param = admin |
49 | 60 | elif not admin.is_owner: |
|
0 commit comments