from django.db.models import Q from django.shortcuts import get_object_or_404 from rest_framework import generics from .models import * from .serializers import InfraccionCondonadaSerializer class InfraccionesList(generics.ListAPIView): model = InfraccionSinPagar def get_queryset(self): licencia = self.request.GET.get('licencia') rfc = self.request.GET.get('rfc') curp = self.request.GET.get('curp') apellido = self.request.GET.get('apellido') nombre = self.request.GET.get('nombre') folio_infraccion = self.request.QUERY_PARAMS.get('folio_infraccion') infracciones_condonadas = InfraccionCondonada.objects.all().values_list('folio_infraccion') queryset = InfraccionSinPagar.objects.exclude( Q(folio_infraccion__in=infracciones_condonadas) | Q(estatus_pago__iexact='prescrita') ) if licencia is not None and rfc is not None and curp is not None: queryset = queryset.filter( Q(numero_licencia=licencia, rfc_infractor=rfc, curp_infractor=curp) | Q(numero_licencia=licencia, rfc_infractor=rfc) | Q(numero_licencia=licencia) | Q(rfc_infractor=rfc) ).distinct().order_by('fecha_infraccion') elif rfc is not None and curp is not None: queryset = queryset.filter( Q(rfc_infractor=rfc, curp_infractor=curp) ).order_by('fecha_infraccion') elif licencia is not None and rfc is not None: queryset = queryset.filter( Q(numero_licencia=licencia, rfc_infractor=rfc) ).order_by('fecha_infraccion') elif rfc is not None: queryset = queryset.filter( Q(rfc_infractor=rfc) ).order_by('fecha_infraccion') elif curp is not None: queryset = queryset.filter( Q(curp_infractor=curp) ).order_by('fecha_infraccion') elif licencia is not None: queryset = queryset.filter( Q(numero_licencia__icontains=licencia) ).order_by('fecha_infraccion') elif nombre is not None and apellido is not None: queryset = queryset.filter( Q(ape_paterno_infractor=apellido, nombre_infractor=nombre) ).order_by('fecha_infraccion') elif folio_infraccion: queryset = queryset.filter(folio_infraccion=folio_infraccion) else: queryset = get_object_or_404(InfraccionSinPagar, pk=-1) return queryset class CondonaInfraccionAPIView(generics.CreateAPIView): model = InfraccionCondonada serializer_class = InfraccionCondonadaSerializer def pre_save(self, obj): get_object_or_404(InfraccionSinPagar, folio_infraccion=obj.folio_infraccion)