Free and open source ticket system written in python
Something went wrong. Try again.
12345678910111213141516171819202122232425262728293031323334353637383940"""API routes for the ticketing app."""from ninja import Router, ModelSchema, Schemafrom ninja.orm import create_schemafrom django.conf import settingsfrom django.shortcuts import get_object_or_404from .models import Ticket, Categoryfrom core.models import PawUserfrom .schemas import TicketSchema, TicketDetailSchema, CommentSchema
router = Router(tags=["tickets"])
@router.get("/", response=list[TicketSchema])def list_tickets(request): """List all tickets.""" return Ticket.get_open_tickets(request.user).order_by("priority", "-updated_at").all()
@router.get("/history", response=list[TicketSchema])def list_tickets_history(request): """List all closed tickets.""" return Ticket.get_closed_tickets(request.user).order_by("priority", "-updated_at").all()
@router.get("/{ticket_id}", response=TicketDetailSchema)def get_ticket(request, ticket_id: int): """Get a specific ticket.""" # TODO: Implement ticket retrieval logic return get_object_or_404(Ticket, id=ticket_id)
@router.get("/{ticket_id}/comments", response=list[CommentSchema])def get_ticket_comments(request, ticket_id: int): """Get all comments for a specific ticket.""" ticket = get_object_or_404(Ticket, id=ticket_id) can_view_internal_comments = ticket.can_edit(request.user) if can_view_internal_comments: return ticket.comment_set.all() else: return ticket.comment_set.filter(is_only_for_staff=False).all()