models.py 2.42 KB
from django.db import models

from uuid import uuid4
from .constants import STATUS_CHOICE, MONEDA

from usuario.models import Usuario

# Create your models here.


class Precio (models.Model):
    precio_palabra = models.FloatField(max_length=50, blank=False, null=False)
    vigencia_desde = models.DateField()
    vigencia_hasta = models.DateField()
    usuario = models.ForeignKey(Usuario, on_delete=models.CASCADE)
    moneda = models.CharField(max_length=50, blank=False, null=False, choices=MONEDA, default='peso_argentino')
    precio_ejemplar = models.FloatField(max_length=50, blank=False, null=False)

    class Meta:
        verbose_name = 'Precio'
        verbose_name_plural = 'Precios'

    def __str__(self):
        return self.moneda


class Edicto(models.Model):
    uuid = models.UUIDField(unique=True, editable=False, default=uuid4)
    usuario = models.ForeignKey(Usuario, on_delete=models.CASCADE, verbose_name='Usuario')
    cuerpo_edicto = models.TextField(blank=False, null=False)
    archivo = models.FileField(upload_to="uploads/%Y/%m/%d/", null=False, blank=False)
    dias_publicar = models.PositiveIntegerField(blank=False, null=False)
    cantidad_sellos = models.PositiveIntegerField(blank=False, null=False)
    estado = models.CharField(max_length=150, choices=STATUS_CHOICE, default='iniciado')
    cantidad_palabras = models.IntegerField(blank=False, null=False)
    cantidad_copias = models.PositiveIntegerField(blank=False, null=False)
    fecha_publicacion = models.DateField(blank=True, null=True)
    observaciones = models.CharField(max_length=500, blank=True, null=True)
    fecha_creacion = models.DateField(auto_now_add=True)
    fecha_modificacion = models.DateTimeField(auto_now_add=True)

    class Meta:
        verbose_name = 'Edicto'
        verbose_name_plural = 'Edictos'

    def __str__(self):
        return f"{self.usuario} - Edicto"


class ComprobantePago(models.Model):
    monto = models.FloatField(blank=False, null=False)
    numero_comprobante = models.CharField(max_length=300, blank=False, null=True)
    fecha_pago = models.DateField(blank=False, null=True)
    edicto = models.OneToOneField(Edicto, on_delete=models.CASCADE)
    archivo_comprobante = models.FileField(blank=False, null=True)

    class Meta:
        verbose_name = 'ComprobantePago'
        verbose_name_plural = 'ComprobantesPagos'

    def __str__(self):
        return f"{self.numero_comprobante} comprobante pago de {self.edicto.usuario}"