| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- 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
- para_parejas = models.BooleanField(default=False) # 🔹 nuevo campo para parejas
- lugar = models.ForeignKey('Lugar', on_delete=models.CASCADE, null=True, blank=True)
- # lugar = models.ForeignKey('Lugar', on_delete=models.CASCADE)
- precio = models.DecimalField(max_digits=10, decimal_places=2, default=0.00)
- 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)
- acompanante = models.ForeignKey(
- ReyMotaUser,
- on_delete=models.SET_NULL,
- null=True,
- blank=True,
- related_name='reservas_como_acompanante'
- )
- fecha_reserva = models.DateTimeField(auto_now_add=True)
- iniciador = models.BooleanField(default=True) # 🔹 nuevo campo para parejas
- # añadir un campo para indicar quién inició la reserva. De este modo luego en detalle_evento mostraremos solo una vez a cada pareja.
- def __str__(self):
- if self.acompanante:
- return f"{self.usuario.nombre} (con {self.acompanante.nombre}) - {self.evento.nombre} - reserva realizada a las {self.fecha_reserva}"
- 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)
- acompanante = models.ForeignKey(
- ReyMotaUser,
- on_delete=models.SET_NULL,
- null=True,
- blank=True,
- related_name='lista_espera_como_acompanante'
- )
- fecha_apuntado = models.DateTimeField(auto_now_add=True)
- class Meta:
- verbose_name_plural = "Listas de espera"
- 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
- class Lugar(models.Model):
- nombre = models.CharField(max_length=200)
- url_ubicacion = models.URLField()
- notas = models.TextField(blank=True, null=True)
- class Meta:
- verbose_name_plural = "Lugares"
- def __str__(self):
- return self.nombre
|