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 mixins.filtrado_organizacion import OrganizacionFiltradaMixin, ProcesosPorOrganizacionMixin 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,OrganizacionFiltradaMixin): 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'] def get_queryset(self): """ Filtra las tareas según la organización del usuario. Superusuarios pueden ver todas las tareas. """ queryset = self.get_queryset_filtrado_por_organizacion() # Tambien filtra por importador # if user.is_superuser: # return self.queryset # # return self.queryset.filter(organizacion_id=user.organizacion.id) # else: # return self.queryset.filter(organizacion_id=user.organizacion.id) return queryset