serializer.py 1.62 KB
from rest_framework import serializers

from .constants import EXTENSIONES_VALIDAS

from .models import Edicto, Precio, ComprobantePago


class EdictoSerializer(serializers.ModelSerializer):
    class Meta:
        model = Edicto
        fields = ('usuario',
                  'cuerpo_edicto',
                  'estado',
                  'cantidad_palabras',
                  'dias_publicar',
                  'cantidad_sellos',
                  'cantidad_copias',
                  'fecha_publicacion',
                  'archivo',
                  'fecha_creacion',
                  )
        read_only_fields = ('cantidad_palabras', 'fecha_creacion')

    @staticmethod
    def validate_archivo(value):
        filename, extension = value.name.rsplit(".", 1)
        if extension.lower() not in EXTENSIONES_VALIDAS:
            raise serializers.ValidationError("Archivos permitidos: .pdf, .docx, .jpg, .jpeg, .png")
        return value


class PrecioSerializer(serializers.ModelSerializer):
    class Meta:
        model = Precio
        fields = ('usuario',
                  'moneda',
                  'precio',
                  'precio_ejemplar',
                  'vigencia_desde',
                  'vigencia_hasta',
                  )

    def validate(self, data):
        request = self.context.get('request')
        user = request.user if request else None
        if not user or user.is_anonymous:
            raise serializers.ValidationError("El usuario debe estar autenticado.")
        if not user.is_staff:
            raise serializers.ValidationError("El usuario no es parte del personal designado.")

        return data