serializers.py
2.95 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
from rest_framework import serializers
from usuario.serializers import UsuarioListaSerializer
from .constants import EXTENSIONES_VALIDAS
from .models import Edicto, Precio, ComprobantePago
from .utils import contador
from .precio import calculadora
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',
'tiene_descuento',
)
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
if data['creado_por'].organismo and data['creado_por'].organismo.es_publico:
data['tiene_descuento'] = True
else:
data['tiene_descuento'] = False
data['modificado_por'] = request.user
return data
def create(self, validated_data):
edicto = Edicto.objects.create(**validated_data)
precio = Precio.objects.latest('id')
calculadora(edicto, precio)
edicto.save()
return edicto
@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',
'precio_dia',
)
included_serializers = {'usuario': UsuarioListaSerializer
}
class ComprobanteSerializer(serializers.ModelSerializer):
class Meta:
model = ComprobantePago
fields = (
'edicto',
'monto_subtotal',
'monto_total',
'monto_descuento',
'numero_comprobante',
'fecha_pago',
'archivo',
)
included_serializers = {'edicto': EdictoSerializer}
@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