You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

53 lines
2.0 KiB

from django.db import models
from reymotausers.models import ReyMotaUser
from django.utils import timezone
class Evento(models.Model):
nombre = models.CharField(max_length=100)
descripcion = models.TextField()
fecha = models.DateField()
hora = models.TimeField(default=timezone.now) # Nuevo campo para la hora
plazas_disponibles = models.PositiveIntegerField()
publicado = models.BooleanField(default=False) # Nuevo campo para la publicación
url_imagen = models.TextField(blank=True, null=True) # Campo para la URL de la imagen
def __str__(self):
return self.nombre
def plazas_restantes(self):
return self.plazas_disponibles - self.reservas.count()
class Reserva(models.Model):
evento = models.ForeignKey(
Evento, related_name="reservas", on_delete=models.CASCADE)
usuario = models.ForeignKey(ReyMotaUser, on_delete=models.CASCADE)
fecha_reserva = models.DateTimeField(auto_now_add=True)
def __str__(self):
return f'{self.usuario.nombre} - {self.evento.nombre} reserva realizada a las {self.fecha_reserva}'
class ListaEspera(models.Model):
evento = models.ForeignKey(Evento, on_delete=models.CASCADE, related_name="lista_espera")
usuario = models.ForeignKey(ReyMotaUser, on_delete=models.CASCADE)
fecha_apuntado = models.DateTimeField(auto_now_add=True)
def __str__(self):
return f'{self.usuario.nombre} en lista de espera para {self.evento.nombre}. Solicitada plaza el: {self.fecha_apuntado}'
class Noticia(models.Model):
titulo = models.CharField(max_length=200)
contenido = models.TextField()
fecha_publicacion = models.DateTimeField(auto_now_add=True)
autor = models.ForeignKey(ReyMotaUser, on_delete=models.SET_NULL, null=True)
publicado = models.BooleanField(default=False)
class Meta:
ordering = ['-fecha_publicacion'] # Ordena por fecha de publicación, de la más reciente a la más antigua
def __str__(self):
return self.titulo