feat: add training case import export
This commit is contained in:
@@ -13,9 +13,11 @@ from src.api.signals import get_recent_signals
|
||||
from src.api.training import (
|
||||
add_training_annotation,
|
||||
create_training_attempt,
|
||||
export_training_case_package,
|
||||
get_training_case,
|
||||
get_training_cases,
|
||||
get_training_progress,
|
||||
import_training_case_package,
|
||||
submit_training_attempt,
|
||||
)
|
||||
from src.services.execution import ExecutionService
|
||||
@@ -32,6 +34,8 @@ def build_api_dependencies() -> dict:
|
||||
"executions": execution_service.build_execution_dashboard_items,
|
||||
"training_cases": get_training_cases,
|
||||
"training_case": get_training_case,
|
||||
"training_export_cases": export_training_case_package,
|
||||
"training_import_cases": import_training_case_package,
|
||||
"training_create_attempt": create_training_attempt,
|
||||
"training_add_annotation": add_training_annotation,
|
||||
"training_submit_attempt": submit_training_attempt,
|
||||
@@ -90,6 +94,19 @@ def route_request(
|
||||
limit=limit,
|
||||
)
|
||||
}
|
||||
if method == "GET" and path == "/training/cases/export":
|
||||
status = _get_single(query, "status")
|
||||
skill_tag = _get_single(query, "skill_tag")
|
||||
instrument_id = _get_optional_int(query, "instrument_id")
|
||||
limit = _get_limit(query, "limit", 100, max_value=MAX_TRAINING_LIMIT)
|
||||
return 200, deps["training_export_cases"](
|
||||
status=status,
|
||||
skill_tag=skill_tag,
|
||||
instrument_id=instrument_id,
|
||||
limit=limit,
|
||||
)
|
||||
if method == "POST" and path == "/training/cases/import":
|
||||
return 201, deps["training_import_cases"](body or {})
|
||||
if method == "GET" and len(path_parts) == 3 and path_parts[:2] == ["training", "cases"]:
|
||||
case_id = _parse_path_int(path_parts[2], "case_id")
|
||||
case = deps["training_case"](case_id=case_id)
|
||||
|
||||
@@ -65,6 +65,25 @@ def get_training_progress(
|
||||
return _service(service).get_progress(user_id=user_id, skill_tag=skill_tag, limit=limit)
|
||||
|
||||
|
||||
def export_training_case_package(
|
||||
status: Optional[str] = None,
|
||||
skill_tag: Optional[str] = None,
|
||||
instrument_id: Optional[int] = None,
|
||||
limit: int = 100,
|
||||
service: Optional[TrainingCaseService] = None,
|
||||
) -> dict:
|
||||
return _service(service).export_cases(
|
||||
status=status,
|
||||
skill_tag=skill_tag,
|
||||
instrument_id=instrument_id,
|
||||
limit=limit,
|
||||
)
|
||||
|
||||
|
||||
def import_training_case_package(body: dict, service: Optional[TrainingCaseService] = None) -> dict:
|
||||
return _service(service).import_cases(body)
|
||||
|
||||
|
||||
def _service(service: Optional[TrainingCaseService]) -> TrainingCaseService:
|
||||
return service or TrainingCaseService()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user