forked from retoor/devplacepy
Delete four stale SEO and style agent report JSON/MD files from agents/reports/ that had zero findings or were superseded. Export PYTHONDONTWRITEBYTECODE=1 in the Makefile so all make targets suppress bytecode generation, and add a `tree` target that lists the repository file tree via git ls-tree. Update AGENTS.md and CLAUDE.md documentation to reflect that routers now form a directory tree mirroring URL paths and that bytecode writing is disabled project-wide.
48 lines
1.5 KiB
Python
48 lines
1.5 KiB
Python
# retoor <retoor@molodetz.nl>
|
|
|
|
import logging
|
|
from fastapi import APIRouter, Request
|
|
from devplacepy.utils import require_admin
|
|
from devplacepy.responses import action_result
|
|
from devplacepy.services.audit import record as audit
|
|
from devplacepy.services.manager import service_manager
|
|
|
|
logger = logging.getLogger(__name__)
|
|
router = APIRouter()
|
|
|
|
|
|
@router.post("/ai-quota/reset-guests")
|
|
async def admin_reset_guest_ai_quota(request: Request):
|
|
admin = require_admin(request)
|
|
devii = service_manager.get_service("devii")
|
|
removed = devii.reset_guest_quotas() if devii is not None else 0
|
|
logger.info(
|
|
f"Admin {admin['username']} reset all guest AI quotas ({removed} ledger rows)"
|
|
)
|
|
audit.record(
|
|
request,
|
|
"admin.ai_quota.reset_guests",
|
|
user=admin,
|
|
metadata={"rows_removed": removed},
|
|
summary=f"admin {admin['username']} reset all guest AI quotas",
|
|
)
|
|
return action_result(request, "/admin/ai-usage")
|
|
|
|
|
|
@router.post("/ai-quota/reset-all")
|
|
async def admin_reset_all_ai_quota(request: Request):
|
|
admin = require_admin(request)
|
|
devii = service_manager.get_service("devii")
|
|
removed = devii.reset_all_quotas() if devii is not None else 0
|
|
logger.info(
|
|
f"Admin {admin['username']} reset ALL AI quotas ({removed} ledger rows)"
|
|
)
|
|
audit.record(
|
|
request,
|
|
"admin.ai_quota.reset_all",
|
|
user=admin,
|
|
metadata={"rows_removed": removed},
|
|
summary=f"admin {admin['username']} reset all AI quotas",
|
|
)
|
|
return action_result(request, "/admin/ai-usage")
|