precio.py
1.43 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
from django.utils import timezone
from .models import Edicto, ComprobantePago, Precio
def contador(edicto_id, precio_id):
edicto = Edicto.objects.select_related('usuario').get(id=edicto_id)
organismo = edicto.usuario.organismo.es_publico
sellos = edicto.cantidad_sellos
palabras = edicto.cantidad_palabras
copias = edicto.cantidad_copias
publicar = edicto.dias_publicar
precio_valores = Precio.objects.values('precio',
'precio_ejemplar',
'vigencia_desde',
'vigencia_hasta',).get(id=precio_id)
precio = precio_valores['precio']
precio_ejemplar = precio_valores['precio_ejemplar']
vigencia_desde = precio_valores['vigencia_desde']
vigencia_hasta = precio_valores['vigencia_hasta']
current_datetime = timezone.now()
if not (vigencia_desde <= current_datetime <= vigencia_hasta):
raise ValueError("El precio seleccionado no se encuentra dentro de las fechas permitidas.")
result_palabra = (sellos + palabras) * precio
result_ejemplar = (copias * precio_ejemplar) + (publicar * precio_ejemplar)
if organismo:
resultado = result_ejemplar + result_palabra / 2
else:
resultado = result_ejemplar + result_palabra
precio_resultado = ComprobantePago(edicto=edicto, resultado=resultado)
precio_resultado.save()
return precio_resultado