contador.py 1.15 KB
from django.db.models import F

from organismo.models import Organismo
from .models import Edicto, ComprobantePago


def contador(edicto_id, nombre_id):
    edicto = Edicto.objects.select_related('usuario').get(id=edicto_id)
    organismo_object = Organismo.objects.get(id=nombre_id)
    organismo = organismo_object.es_publico

    sellos = edicto.cantidad_sellos
    palabras = edicto.cantidad_palabras
    copias = edicto.cantidad_copias
    publicar = edicto.dias_publicar

    precios = edicto.usuario.precio_set.all().values('precio', 'precio_ejemplar')
    precios_ejemplar = precios.aggregate(
        precio=F('precio'),
        precio_ejemplar=F('precio_ejemplar'),
    )
    precio = precios_ejemplar['precio']
    precio_copia = precios_ejemplar['precio_ejemplar']

    result_palabra = (sellos + palabras) * precio
    result_ejemplar = (copias * precio_copia) + (publicar * precio_copia)

    if organismo is True:
        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