47 lines
1.3 KiB
Python
47 lines
1.3 KiB
Python
# -*- encoding: utf-8 -*-
|
|
|
|
import json
|
|
|
|
from django.conf import settings
|
|
from rest_framework.views import APIView
|
|
from rest_framework.response import Response
|
|
from rest_framework import status, permissions
|
|
|
|
from apps.home.models import Ticket, TicketPriority, TicketTag
|
|
from .serializers import (
|
|
TicketSerializer, TicketTagSerializer, TicketPrioritySerializer,
|
|
UserSerializer
|
|
)
|
|
|
|
|
|
class TicketListApiView(APIView):
|
|
permission_classes = [permissions.IsAuthenticated]
|
|
|
|
def get(self, request):
|
|
"""Return all tickets."""
|
|
|
|
filters = json.loads(request.GET.get("filters", "{}"))
|
|
queryset = Ticket.objects.all()
|
|
|
|
for key, values in filters.items():
|
|
|
|
for value in values:
|
|
if value == "all": continue
|
|
queryset = queryset.filter(**{key: [value]})
|
|
|
|
tickets = queryset.order_by("-create_timestamp")
|
|
serializer = TicketSerializer(tickets, many=True)
|
|
return Response(serializer.data, status=status.HTTP_200_OK)
|
|
|
|
def post(self, request):
|
|
"""Create a new ticket"""
|
|
|
|
serializer = TicketSerializer(data={
|
|
|
|
})
|
|
if not serializer.is_valid():
|
|
return Response(serlializer.errors, status=status.HTTP_400_BAD_REQUEST)
|
|
|
|
serializer.save()
|
|
return Response(serializer.data, status=status.HTTP_201_CREATED)
|