update
This commit is contained in:
@@ -21,6 +21,7 @@ import psycopg
|
||||
from fastapi import (
|
||||
APIRouter,
|
||||
BackgroundTasks,
|
||||
Request,
|
||||
Body,
|
||||
Depends,
|
||||
File,
|
||||
@@ -76,6 +77,7 @@ from app.modules.data_process.store import (
|
||||
get_data_process_store,
|
||||
new_id,
|
||||
)
|
||||
from app.db.platform_store import get_platform_store
|
||||
from app.schemas.data_process import (
|
||||
DataProcessRegenerateRequest,
|
||||
DataProcessStatus,
|
||||
@@ -148,6 +150,13 @@ def fail(status_code: int, message: str) -> HTTPException:
|
||||
)
|
||||
|
||||
|
||||
def _actor(request: Request | None) -> str | None:
|
||||
if not request:
|
||||
return None
|
||||
auth = request.headers.get("Authorization", "")
|
||||
return auth.replace("Bearer ", "").strip() or None
|
||||
|
||||
|
||||
@contextmanager
|
||||
def api_errors() -> Iterator[None]:
|
||||
try:
|
||||
@@ -790,9 +799,16 @@ def list_tasks(
|
||||
def create_task(
|
||||
payload: DataProcessTaskCreate,
|
||||
store: DataProcessStore = Depends(get_data_process_store),
|
||||
request: Request = None,
|
||||
) -> dict[str, Any]:
|
||||
with api_errors():
|
||||
task = store.create_task(payload.model_dump(mode="json"))
|
||||
get_platform_store().record_audit(
|
||||
action="data-process.create",
|
||||
actor_id=_actor(request),
|
||||
target_type="data_process_task",
|
||||
target_id=task["id"],
|
||||
)
|
||||
return ok(task, "data process task created")
|
||||
|
||||
|
||||
@@ -854,9 +870,16 @@ def prepare_regeneration(
|
||||
def delete_task(
|
||||
task_id: str,
|
||||
store: DataProcessStore = Depends(get_data_process_store),
|
||||
request: Request = None,
|
||||
) -> dict[str, Any]:
|
||||
with api_errors():
|
||||
store.delete_task(task_id)
|
||||
get_platform_store().record_audit(
|
||||
action="data-process.delete",
|
||||
actor_id=_actor(request),
|
||||
target_type="data_process_task",
|
||||
target_id=task_id,
|
||||
)
|
||||
return ok({"deleted": task_id}, "data process task deleted")
|
||||
|
||||
|
||||
@@ -875,6 +898,7 @@ async def upload_source_files(
|
||||
files: list[UploadFile] = File(...),
|
||||
store: DataProcessStore = Depends(get_data_process_store),
|
||||
storage: LocalDataProcessStorage = Depends(get_data_process_storage),
|
||||
request: Request = None,
|
||||
) -> dict[str, Any]:
|
||||
if not files:
|
||||
raise fail(400, "at least one source file is required")
|
||||
@@ -959,6 +983,12 @@ async def upload_source_files(
|
||||
finally:
|
||||
if not commit_attempted:
|
||||
storage.discard(staged)
|
||||
get_platform_store().record_audit(
|
||||
action="data-process.upload",
|
||||
actor_id=_actor(request),
|
||||
target_type="data_process_task",
|
||||
target_id=task_id,
|
||||
)
|
||||
return ok({"files": created}, "source files uploaded")
|
||||
|
||||
|
||||
@@ -1701,7 +1731,14 @@ def generate(
|
||||
background_tasks: BackgroundTasks,
|
||||
payload: GenerateRequest = Body(default_factory=GenerateRequest),
|
||||
store: DataProcessStore = Depends(get_data_process_store),
|
||||
request: Request = None,
|
||||
) -> dict[str, Any]:
|
||||
get_platform_store().record_audit(
|
||||
action="data-process.generate",
|
||||
actor_id=_actor(request),
|
||||
target_type="data_process_task",
|
||||
target_id=task_id,
|
||||
)
|
||||
return _start_generation(task_id, payload, background_tasks, store)
|
||||
|
||||
|
||||
@@ -2254,8 +2291,15 @@ def publish(
|
||||
task_id: str,
|
||||
payload: PublishRequest,
|
||||
store: DataProcessStore = Depends(get_data_process_store),
|
||||
request: Request = None,
|
||||
) -> dict[str, Any]:
|
||||
with api_errors():
|
||||
result = store.publish(task_id, payload.model_dump(mode="json"))
|
||||
message = "dataset published" if result["created"] else "dataset already published"
|
||||
get_platform_store().record_audit(
|
||||
action="data-process.publish",
|
||||
actor_id=_actor(request),
|
||||
target_type="data_process_task",
|
||||
target_id=task_id,
|
||||
)
|
||||
return ok(result, message)
|
||||
|
||||
Reference in New Issue
Block a user