Watch
1
0
Fork
You've already forked Seyyed_arc
0
forked from hesabix/arc
Seyyed_arc/hesabixAPI/adapters/api/v1/admin/hscript_admin.py

55 lines
1.5 KiB
Python

"""Admin endpoints برای ممیزی اجرای گزارش‌های HScript."""
from __future__ import annotations
from typing import Optional
from fastapi import APIRouter, Depends, Query, Request
from sqlalchemy.orm import Session
from adapters.db.session import get_db
from app.core.auth_dependency import AuthContext, get_current_user
from app.core.permissions import require_app_permission
from app.core.responses import ApiError, format_datetime_fields, success_response
from app.services import hscript_report_service as svc
router = APIRouter(prefix="/admin/hscript", tags=["admin-hscript"])
def _require_admin(ctx: AuthContext) -> None:
if not (ctx.is_superadmin() or ctx.has_app_permission("system_settings")):
raise ApiError(
"FORBIDDEN",
"system_settings permission required",
http_status=403,
)
@router.get(
"/runs",
summary="لیست اجرای HScript (همه کسب‌وکارها)",
)
@require_app_permission("system_settings")
async def list_hscript_runs_admin(
request: Request,
business_id: Optional[int] = Query(default=None),
status: Optional[str] = Query(default=None),
skip: int = Query(default=0, ge=0),
take: int = Query(default=50, ge=1, le=200),
db: Session = Depends(get_db),
ctx: AuthContext = Depends(get_current_user),
):
_require_admin(ctx)
data = svc.list_runs_admin(
db,
business_id=business_id,
status=status,
skip=skip,
take=take,
)
return success_response(
data=format_datetime_fields(data, request),
request=request,
message="HSCRIPT_ADMIN_RUNS",
)