diff --git a/app/routers/pages.py b/app/routers/pages.py index 1123105..ef1da73 100644 --- a/app/routers/pages.py +++ b/app/routers/pages.py @@ -2,8 +2,6 @@ from __future__ import annotations -from __future__ import annotations - from pathlib import Path from fastapi import APIRouter, Request diff --git a/app/schemas/ticket.py b/app/schemas/ticket.py index e8652b8..a3ff4d7 100644 --- a/app/schemas/ticket.py +++ b/app/schemas/ticket.py @@ -46,6 +46,7 @@ class TicketUpdate(BaseModel): eta: datetime | None = None cost: Decimal | None = None parts_used: str | None = None + note: str | None = None class TicketTimelineOut(BaseModel): diff --git a/app/services/ticket.py b/app/services/ticket.py index 9efcb7f..c22f061 100644 --- a/app/services/ticket.py +++ b/app/services/ticket.py @@ -275,6 +275,18 @@ async def update_ticket( ticket.status = new_status + # Handle standalone note (no status change) + note_only = data.get("note") + if note_only and (new_status is None or new_status == ticket.status): + await _log_status_change( + db, + ticket.id, + from_status=ticket.status, + to_status=ticket.status, + note=note_only, + user_id=user.id if user else None, + ) + # Update other fields for field in ("unit_id", "category_id", "priority", "reporter", "reported_via", "description", "assigned_to", "eta", "cost", "parts_used"): diff --git a/app/templates/tickets/detail.html b/app/templates/tickets/detail.html index 977b9ae..17ceb36 100644 --- a/app/templates/tickets/detail.html +++ b/app/templates/tickets/detail.html @@ -311,7 +311,7 @@ async init() { await this.loadTicket(); - if (this.isFM || this.isAdmin) { + if (app().isFM || app().isAdmin) { await this.loadTechnicians(); } }, @@ -392,9 +392,8 @@ if (!this.noteForm.note.trim()) return; this.noteSubmitting = true; try { - // Use status update endpoint to add a note without changing status - const updated = await app().apiPost(`/api/tickets/${this.ticketId}/status`, { - status: this.ticket.status, + // Use PATCH endpoint which now supports note-only updates + const updated = await app().apiPatch(`/api/tickets/${this.ticketId}`, { note: this.noteForm.note }); this.ticket = updated; diff --git a/app/templates/tickets/new.html b/app/templates/tickets/new.html index f9aea87..c7b117b 100644 --- a/app/templates/tickets/new.html +++ b/app/templates/tickets/new.html @@ -244,7 +244,7 @@ const payload = { description: this.form.description, priority: this.form.priority || null, - reporter: this.form.reporter || this.user.full_name, + reporter: this.form.reporter || app().user.full_name, reported_via: this.form.reported_via || 'walk-in', category_id: this.form.category_id ? parseInt(this.form.category_id) : (this.form.category_main ? parseInt(this.form.category_main) : null), };