fix: update OPC routers to use request.state.user instead of Depends(_inject_user)

This commit is contained in:
Gan, Jimmy
2026-04-02 00:45:26 +08:00
parent 5cfb92cfc6
commit 6cffc1f9ff
3 changed files with 50 additions and 28 deletions
+20 -11
View File
@@ -1,12 +1,12 @@
"""
OPC Task Management Router
"""
from fastapi import APIRouter, Depends, Query, HTTPException
from fastapi import APIRouter, Depends, Query, HTTPException, Request
from typing import Optional, List
from pydantic import BaseModel
from datetime import datetime
from db import opc_db
from rbac import require_page, User, _inject_user
from rbac import require_page, User
from routers import opc_ws
router = APIRouter()
@@ -48,6 +48,7 @@ class TaskAssign(BaseModel):
@router.get("/tasks")
async def list_tasks(
request: Request,
status: Optional[str] = Query(None),
assigned_to: Optional[str] = Query(None),
project_id: Optional[int] = Query(None),
@@ -55,9 +56,9 @@ async def list_tasks(
tags: Optional[str] = Query(None),
limit: int = Query(50, le=100),
offset: int = Query(0, ge=0),
user: User = Depends(_inject_user)
):
"""List tasks with filters"""
user: User = request.state.user
tag_list = tags.split(",") if tags else None
tasks = await opc_db.get_tasks(
status=status,
@@ -73,10 +74,11 @@ async def list_tasks(
@router.post("/tasks")
async def create_task(
request: Request,
task: TaskCreate,
user: User = Depends(_inject_user)
):
"""Create a new task"""
user: User = request.state.user
created_task = await opc_db.create_task(
title=task.title,
description=task.description,
@@ -107,9 +109,10 @@ async def create_task(
@router.get("/tasks/{task_id}")
async def get_task(
task_id: int,
user: User = Depends(_inject_user)
request: Request,
):
"""Get task details"""
user: User = request.state.user
tasks = await opc_db.get_tasks(limit=1, offset=0)
task = next((t for t in tasks if t["id"] == task_id), None)
if not task:
@@ -121,9 +124,10 @@ async def get_task(
async def update_task(
task_id: int,
task: TaskUpdate,
user: User = Depends(_inject_user)
request: Request,
):
"""Update a task"""
user: User = request.state.user
updates = task.dict(exclude_unset=True)
# Get current task status
@@ -167,9 +171,10 @@ async def update_task(
@router.delete("/tasks/{task_id}")
async def delete_task(
task_id: int,
user: User = Depends(_inject_user)
request: Request,
):
"""Delete a task"""
user: User = request.state.user
await opc_db.delete_task(task_id=task_id, actor=user.username)
# Broadcast WebSocket update
@@ -182,9 +187,10 @@ async def delete_task(
async def move_task(
task_id: int,
move: TaskMove,
user: User = Depends(_inject_user)
request: Request,
):
"""Move task to a different column"""
user: User = request.state.user
updates = {"status": move.status}
# Get current task
@@ -221,9 +227,10 @@ async def move_task(
async def assign_task(
task_id: int,
assign: TaskAssign,
user: User = Depends(_inject_user)
request: Request,
):
"""Assign task to human or agent"""
user: User = request.state.user
updates = {
"assigned_to": assign.assigned_to,
"assigned_type": assign.assigned_type
@@ -249,9 +256,10 @@ async def assign_task(
@router.get("/tasks/{task_id}/history")
async def get_task_history(
task_id: int,
user: User = Depends(_inject_user)
request: Request,
):
"""Get task history"""
user: User = request.state.user
history = await opc_db.get_task_history(task_id=task_id)
return {"items": history}
@@ -259,9 +267,10 @@ async def get_task_history(
@router.get("/tasks/{task_id}/time")
async def get_task_time(
task_id: int,
user: User = Depends(_inject_user)
request: Request,
):
"""Get time entries for a task"""
user: User = request.state.user
entries = await opc_db.get_time_entries(task_id=task_id)
total_minutes = sum(e["duration_minutes"] for e in entries)
return {