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
+14 -8
View File
@@ -1,11 +1,11 @@
"""
OPC Projects and Invoicing Router
"""
from fastapi import APIRouter, Depends, HTTPException, Response
from fastapi import APIRouter, Depends, HTTPException, Response, Request
from typing import Optional
from pydantic import BaseModel
from db import opc_db
from rbac import User, _inject_user
from rbac import User
from services import pdf_service
from datetime import datetime
@@ -26,9 +26,10 @@ class InvoiceGenerate(BaseModel):
@router.get("/projects")
async def list_projects(
user: User = Depends(_inject_user)
request: Request,
):
"""List all projects"""
user: User = request.state.user
pool = await opc_db.get_pool()
async with pool.acquire() as conn:
rows = await conn.fetch("SELECT * FROM projects ORDER BY created_at DESC")
@@ -38,9 +39,10 @@ async def list_projects(
@router.post("/projects")
async def create_project(
project: ProjectCreate,
user: User = Depends(_inject_user)
request: Request,
):
"""Create a new project"""
user: User = request.state.user
pool = await opc_db.get_pool()
async with pool.acquire() as conn:
row = await conn.fetchrow("""
@@ -53,9 +55,10 @@ async def create_project(
@router.get("/clients")
async def list_clients(
user: User = Depends(_inject_user)
request: Request,
):
"""List all clients"""
user: User = request.state.user
pool = await opc_db.get_pool()
async with pool.acquire() as conn:
rows = await conn.fetch("SELECT * FROM clients ORDER BY name")
@@ -64,12 +67,13 @@ async def list_clients(
@router.post("/clients")
async def create_client(
request: Request,
name: str,
email: Optional[str] = None,
company: Optional[str] = None,
user: User = Depends(_inject_user)
):
"""Create a new client"""
user: User = request.state.user
pool = await opc_db.get_pool()
async with pool.acquire() as conn:
row = await conn.fetchrow("""
@@ -83,9 +87,10 @@ async def create_client(
@router.post("/invoices/generate")
async def generate_invoice(
invoice: InvoiceGenerate,
user: User = Depends(_inject_user)
request: Request,
):
"""Generate PDF invoice for a project"""
user: User = request.state.user
pool = await opc_db.get_pool()
async with pool.acquire() as conn:
# Get client
@@ -128,9 +133,10 @@ async def generate_invoice(
@router.get("/projects/{project_id}/time")
async def get_project_time(
project_id: int,
user: User = Depends(_inject_user)
request: Request,
):
"""Get time entries for a project"""
user: User = request.state.user
entries = await opc_db.get_time_entries(project_id=project_id)
total_minutes = sum(e["duration_minutes"] for e in entries)
billable_minutes = sum(e["duration_minutes"] for e in entries if e.get("billable"))