89e0c2fb50
- Add Pipeline and PipelineStep models with user-specific ownership
- Add pipeline_id FK column to FileRecord
- Migration 017_add_pipelines (batch mode for SQLite FK compat)
- Pipeline CRUD API at /api/pipelines with step management endpoints
- Reorder steps PUT endpoint placed before parameterised {step_id} routes
- POST /api/files/{id}/assign-pipeline for per-file pipeline assignment
- Admin-only POST /api/pipelines/admin/system for system-level pipelines
- Management UI at /pipelines (Jinja2 + Alpine.js + Tailwind)
- Pipelines link added to desktop and mobile navigation
- 41 new tests in tests/test_api_pipelines.py (all passing)
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
35 lines
1004 B
Python
35 lines
1004 B
Python
"""Pipelines view: management UI for processing pipelines."""
|
|
|
|
import logging
|
|
|
|
from fastapi import HTTPException, Request, status
|
|
|
|
from app.views.base import APIRouter, require_login, settings, templates
|
|
|
|
logger = logging.getLogger(__name__)
|
|
router = APIRouter()
|
|
|
|
|
|
@router.get("/pipelines")
|
|
@require_login
|
|
async def pipelines_page(request: Request):
|
|
"""Processing pipeline management page for the current user.
|
|
|
|
Regular users manage their own pipelines. Admins additionally have access
|
|
to system-level pipelines through the same UI.
|
|
"""
|
|
try:
|
|
return templates.TemplateResponse(
|
|
"pipelines.html",
|
|
{
|
|
"request": request,
|
|
"app_version": settings.version,
|
|
},
|
|
)
|
|
except Exception as exc:
|
|
logger.error(f"Error loading pipelines page: {exc}")
|
|
raise HTTPException(
|
|
status_code=status.HTTP_500_INTERNAL_SERVER_ERROR,
|
|
detail="Failed to load pipelines page",
|
|
)
|