fix: TemplateResponse API, auth fallback, drop environment_id from update_ticket MCP tool

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Kevin Welvaert ATA IT 2026-05-27 09:11:55 +02:00
parent 018f2f40a2
commit 92b3afe9d6
3 changed files with 20 additions and 27 deletions

View file

@ -34,7 +34,7 @@ async def root():
@app.get("/tickets", response_class=HTMLResponse, include_in_schema=False) @app.get("/tickets", response_class=HTMLResponse, include_in_schema=False)
async def tickets_page(request: Request): async def tickets_page(request: Request):
return templates.TemplateResponse( return templates.TemplateResponse(
"tickets.html", {"request": request, "active_page": "tickets"} request, "tickets.html", {"active_page": "tickets"}
) )

View file

@ -159,9 +159,7 @@ def make_router(api_key: str, get_db, require_user=None) -> APIRouter:
return {"username": "claude", "email": "claude@internal"} return {"username": "claude", "email": "claude@internal"}
if require_user is not None: if require_user is not None:
return require_user(request) return require_user(request)
if not api_key: return {"username": "local", "email": "local@localhost"}
return {"username": "local", "email": "local@localhost"}
raise HTTPException(401, "unauthorized")
# ── Environment endpoints ───────────────────────────────────────────────── # ── Environment endpoints ─────────────────────────────────────────────────

View file

@ -229,33 +229,30 @@ def delete_ticket(ticket_id: int) -> dict:
@mcp.tool() @mcp.tool()
def update_ticket( def update_ticket(
ticket_id: int, ticket_id: int,
title: str = "", title: str = "",
description: str = "", description: str = "",
status: str = "", status: str = "",
type: str = "", type: str = "",
user: str = "", user: str = "",
parent_id: int = -1, parent_id: int = -1,
effort: int = -1, effort: int = -1,
environment_id: int = -1,
) -> dict: ) -> dict:
""" """
Update an existing homelab ticket. Only provided (non-empty) fields Update an existing homelab ticket. Only provided (non-empty) fields
are changed; omit a field to leave it unchanged. are changed; omit a field to leave it unchanged.
Args: Args:
ticket_id: The integer ID of the ticket to update. ticket_id: The integer ID of the ticket to update.
title: New title. title: New title.
description: New markdown description. description: New markdown description.
status: open, ongoing, completed, abandoned. status: open, ongoing, completed, abandoned.
type: feature, bug, chore, project. type: feature, bug, chore, project.
user: kevin or claude. user: kevin or claude.
parent_id: Set parent ticket ID; pass 0 to clear the parent. parent_id: Set parent ticket ID; pass 0 to clear the parent.
Omit (default -1) to leave unchanged. Omit (default -1) to leave unchanged.
effort: Effort rating 110; pass 0 to clear it. effort: Effort rating 110; pass 0 to clear it.
Omit (default -1) to leave unchanged. Omit (default -1) to leave unchanged.
environment_id: Move ticket to a different environment by ID.
Omit (default -1) to leave unchanged.
""" """
body = {} body = {}
if title: body["title"] = title if title: body["title"] = title
@ -267,8 +264,6 @@ def update_ticket(
body["parent_id"] = parent_id if parent_id > 0 else None body["parent_id"] = parent_id if parent_id > 0 else None
if effort >= 0: if effort >= 0:
body["effort"] = effort if effort > 0 else None body["effort"] = effort if effort > 0 else None
if environment_id >= 0:
body["environment_id"] = environment_id if environment_id > 0 else None
if not body: if not body:
raise ValueError("Provide at least one field to update") raise ValueError("Provide at least one field to update")
with _client() as c: with _client() as c: