serializers.py 1.77 KB
from rest_framework import serializers

from usuario.serializers import UsuarioListaSerializer
from .constants import EXTENSIONES_VALIDAS
from .models import Edicto, Precio
from .utils import contador


class EdictoSerializer(serializers.ModelSerializer):
    included_serializers = {
        'creado_por': UsuarioListaSerializer,
        'modificado_por': UsuarioListaSerializer,
    }

    class Meta:
        model = Edicto
        fields = (
            'uuid',
            'creado_por',
            'modificado_por',
            'estado',
            'cuerpo_edicto',
            'cantidad_palabras',
            'dias_publicar',
            'cantidad_sellos',
            'cantidad_copias',
            'archivo',
            'fecha_creacion',
            'observaciones',
            'fecha_publicacion',
            'fecha_modificacion'
        )

        read_only_fields = ('fecha_publicacion',)

    def validate(self, data):
        request = self.context['request']
        data['cantidad_palabras'] = contador(data.get('cuerpo_edicto', ''))

        if request.method == 'POST':
            data['creado_por'] = request.user

        data['modificado_por'] = request.user
        return data

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


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

    included_serializers = {'usuario': UsuarioListaSerializer}