Enzo Yair

modificaciones en endpoint en el serializer de precio

... ... @@ -44,12 +44,17 @@ class EdictoViewSet(AuditoriaMixin, mixins.CreateModelMixin,
return Response(serializer.data)
class PrecioViewSet(AuditoriaMixin, viewsets.ReadOnlyModelViewSet):
class PrecioViewSet(mixins.CreateModelMixin,
mixins.RetrieveModelMixin,
mixins.UpdateModelMixin,
mixins.ListModelMixin,
viewsets.GenericViewSet,
):
serializer_class = PrecioSerializer
permission_classes = [IsAuthenticated, IsAdminOrAuthorized]
filter_backends = (DjangoFilterBackend, filters.OrderingFilter)
filterset_class = PrecioFilter
ordering_fields = ('usuario',)
ordering_fields = ('usuario', 'id',)
ordering = 'usuario'
queryset = Precio.objects.all()
... ... @@ -65,7 +70,7 @@ class ComprobanteViewSet(mixins.UpdateModelMixin,
queryset = ComprobantePago.objects.all()
filter_backends = (DjangoFilterBackend, filters.OrderingFilter)
filter_class = ComprobanteFilter
ordering_fields = ('id','monto_descuento', 'monto_total', 'fecha_pago')
ordering_fields = ('id', 'monto_descuento', 'monto_total', 'fecha_pago')
ordering = 'id'
... ...
... ... @@ -84,6 +84,20 @@ class PrecioSerializer(serializers.ModelSerializer):
included_serializers = {'usuario': UsuarioListaSerializer
}
def validate(self, data):
data['usuario'] = self.context['request'].user
vigencia_hasta = data.get('vigencia_hasta')
if not vigencia_hasta:
precios_sin_vigencia = Precio.objects.filter(vigencia_hasta__isnull=True)
if precios_sin_vigencia.exists():
raise serializers.ValidationError(
'Error al agregar: Ya existe un objeto Precio sin vigencia_hasta. '
'Debe proporcionar una fecha para vigencia_hasta antes de crear un nuevo objeto Precio.'
)
return data
class ComprobanteSerializer(serializers.ModelSerializer):
class Meta:
... ...