feat: add ticket status filters
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
import csv
|
||||
from datetime import timedelta
|
||||
from math import ceil
|
||||
|
||||
from django.contrib.auth import get_user_model
|
||||
@@ -146,6 +147,8 @@ def list_tickets(
|
||||
related_system: str | None = None,
|
||||
assignee_id: int | None = None,
|
||||
view: str = "all",
|
||||
status_group: str | None = None,
|
||||
resolved_within_days: int | None = None,
|
||||
):
|
||||
require_permission(request, "ticket.view")
|
||||
queryset = Ticket.objects.select_related("requester", "assignee", "category").all()
|
||||
@@ -175,6 +178,18 @@ def list_tickets(
|
||||
queryset = queryset.filter(created_by=request.user)
|
||||
if view == "high_priority":
|
||||
queryset = queryset.filter(priority__in=["high", "urgent"])
|
||||
if status_group == "active":
|
||||
queryset = queryset.exclude(status__in=["resolved", "closed"])
|
||||
elif status_group == "completed":
|
||||
queryset = queryset.filter(status__in=["resolved", "closed"])
|
||||
elif status_group:
|
||||
raise HttpError(400, "Unknown status group")
|
||||
if resolved_within_days is not None:
|
||||
days = min(max(resolved_within_days, 1), 365)
|
||||
cutoff = timezone.now() - timedelta(days=days)
|
||||
queryset = queryset.filter(
|
||||
Q(resolved_at__gte=cutoff) | Q(closed_at__gte=cutoff)
|
||||
)
|
||||
|
||||
page = max(page, 1)
|
||||
page_size = min(max(page_size, 1), 100)
|
||||
|
||||
Reference in New Issue
Block a user