123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- from django.contrib import messages
- from django.contrib.auth.decorators import login_required
- from django.core.exceptions import PermissionDenied
- from django.shortcuts import get_object_or_404, redirect, render
- from django.db.models import F, Count
- from tickets.forms import TicketForm
- from tickets.models import Ticket, TicketList
- @login_required
- def ticket_list_detail(request, pk=None, my_tickets=False, assignments=False):
- form = None
- ticket_list = None
-
- if my_tickets:
- tickets = Ticket.objects.filter(assigned_to=request.user)
- elif assignments:
- tickets = Ticket.objects.filter(created_by=request.user)
- else:
- ticket_list = get_object_or_404(TicketList.objects.select_related('group'), id=pk)
- if ticket_list.group not in request.user.groups.all() and not request.user.is_superuser:
- raise PermissionDenied
- tickets = Ticket.objects.filter(ticket_list=ticket_list)
- form = TicketForm(
- request.user,
- initial={
- "ticket_list": ticket_list
- }
- )
-
- tickets = tickets.annotate(created_by_username=F("created_by__username"))
- tickets = tickets.annotate(assigned_to_username=F("assigned_to__username"))
-
- context = {
- "ticket_list": ticket_list,
- "tickets": tickets,
- "form": form,
- "my_tickets": my_tickets,
- "assignments": assignments
- }
- return render(request, "tickets/ticket_list_detail.html", context)
|