35 lines
1.3 KiB
Python
35 lines
1.3 KiB
Python
from django.shortcuts import render
|
|
from rest_framework import viewsets, filters
|
|
from django_filters.rest_framework import DjangoFilterBackend
|
|
from rest_framework.pagination import PageNumberPagination
|
|
|
|
from api.logger.mixins import LoggingMixin
|
|
from .models import Task
|
|
from .serializers import TaskSerializer
|
|
from .filters import TaskFilter
|
|
from rest_framework.permissions import IsAuthenticated
|
|
|
|
# Create your views here.
|
|
from core.permissions import (
|
|
IsSameOrganization,
|
|
IsSameOrganizationDeveloper,
|
|
IsSameOrganizationAndAdmin,
|
|
IsSuperUser
|
|
)
|
|
|
|
class TaskPagination(PageNumberPagination):
|
|
page_size = 10
|
|
page_size_query_param = 'page_size'
|
|
max_page_size = 100
|
|
|
|
class TaskViewSet(LoggingMixin,viewsets.ModelViewSet):
|
|
permission_classes = [IsAuthenticated & (IsSameOrganization | IsSameOrganizationAndAdmin | IsSameOrganizationDeveloper | IsSuperUser)]
|
|
queryset = Task.objects.select_related('pedimento', 'servicio').all()
|
|
serializer_class = TaskSerializer
|
|
filter_backends = [DjangoFilterBackend, filters.OrderingFilter]
|
|
filterset_class = TaskFilter
|
|
pagination_class = TaskPagination
|
|
ordering_fields = ['timestamp']
|
|
ordering = ['-timestamp'] # ordenamiento por defecto, más reciente primero
|
|
|
|
my_tags = ['tasks'] |