add filter and sort for ticket and update status ticket
This commit is contained in:
@@ -0,0 +1,18 @@
|
||||
# Generated by Django 5.1.2 on 2025-02-21 18:35
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('ticket', '0011_ticket_content'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='ticket',
|
||||
name='status',
|
||||
field=models.CharField(choices=[('in_progress', 'در حال پردازش'), ('resolved', 'حل شده'), ('closed', 'بسته')], default='open', max_length=20, verbose_name='وضعیت تیکت'),
|
||||
),
|
||||
]
|
||||
@@ -6,7 +6,6 @@ from django_jalali.db import models as jmodels
|
||||
class Ticket(models.Model):
|
||||
objects = jmodels.jManager()
|
||||
STATUS_CHOICES = [
|
||||
('open', 'باز'),
|
||||
('in_progress', 'در حال پردازش'),
|
||||
('resolved', 'حل شده'),
|
||||
('closed', 'بسته'),
|
||||
|
||||
+28
-1
@@ -33,7 +33,26 @@ class TicketListView(APIView):
|
||||
description="افستش",
|
||||
required=False,
|
||||
type=OpenApiTypes.INT,
|
||||
)
|
||||
),
|
||||
OpenApiParameter(
|
||||
name="filter",
|
||||
description=(
|
||||
"filter results by one of the following fields:\n"
|
||||
"`in_progress`, `closed`, `resolved`."
|
||||
),
|
||||
required=False,
|
||||
type=OpenApiTypes.STR,
|
||||
),
|
||||
OpenApiParameter(
|
||||
name="sort",
|
||||
description=(
|
||||
"Sort results by one of the following fields:\n"
|
||||
" `created_at`, `-created_at`."
|
||||
"\nPrefix with `-` for descending order."
|
||||
),
|
||||
required=False,
|
||||
type=OpenApiTypes.STR,
|
||||
),
|
||||
],
|
||||
responses={
|
||||
200: TicketListSerializer(many=True),
|
||||
@@ -42,6 +61,14 @@ class TicketListView(APIView):
|
||||
)
|
||||
def get(self, request):
|
||||
tickets = Ticket.objects.filter(customer=request.user)
|
||||
filter_by = request.query_params.get('filter', None)
|
||||
sort = request.query_params.get('sort', None)
|
||||
if filter_by:
|
||||
tickets.filter(status=str(filter_by))
|
||||
if sort:
|
||||
if sort not in ['created_at', '-created_at']:
|
||||
return Response({'detail': 'wrong sort paramter'}, status=status.HTTP_400_BAD_REQUEST)
|
||||
tickets.order_by(sort)
|
||||
paginator = self.pagination_class()
|
||||
paginated_tickets = paginator.paginate_queryset(tickets, request)
|
||||
tickets_ser = self.serializer_class(instance=paginated_tickets, many=True, context={'request': request})
|
||||
|
||||
Reference in New Issue
Block a user