diff --git a/JugarAlPadel/gestion_reservas/db.sqlite3 b/JugarAlPadel/gestion_reservas/db.sqlite3 index 0b7ad00..35775c1 100644 Binary files a/JugarAlPadel/gestion_reservas/db.sqlite3 and b/JugarAlPadel/gestion_reservas/db.sqlite3 differ diff --git a/JugarAlPadel/gestion_reservas/entornoPruebas.sh b/JugarAlPadel/gestion_reservas/entornoPruebas.sh index c98b079..61cd4df 100644 --- a/JugarAlPadel/gestion_reservas/entornoPruebas.sh +++ b/JugarAlPadel/gestion_reservas/entornoPruebas.sh @@ -1,5 +1,5 @@ export CSRF_TRUSTED_ORIGINS="http://localhost" -export DEBUG="False" +export DEBUG="True" export SECRET_KEY="hola" export DJANGO_ALLOWED_HOSTS="localhost" diff --git a/JugarAlPadel/gestion_reservas/eventos/forms.py b/JugarAlPadel/gestion_reservas/eventos/forms.py index 3973d1d..d977e3d 100644 --- a/JugarAlPadel/gestion_reservas/eventos/forms.py +++ b/JugarAlPadel/gestion_reservas/eventos/forms.py @@ -6,6 +6,9 @@ from .models import Evento class EventoForm(forms.ModelForm): class Meta: model = Evento - fields = ['nombre', 'descripcion', 'fecha', 'plazas_disponibles'] + fields = ['nombre', 'descripcion', 'fecha', 'hora', 'plazas_disponibles'] - fecha = forms.DateField(widget=forms.DateInput(attrs={'type': 'date', 'class': 'form-control'})) + widgets = { + 'fecha': forms.DateInput(attrs={'type': 'date'}), + 'hora': forms.TimeInput(attrs={'type': 'time'}), # Widget para seleccionar la hora + } \ No newline at end of file diff --git a/JugarAlPadel/gestion_reservas/eventos/migrations/0003_evento_hora.py b/JugarAlPadel/gestion_reservas/eventos/migrations/0003_evento_hora.py new file mode 100644 index 0000000..7657cad --- /dev/null +++ b/JugarAlPadel/gestion_reservas/eventos/migrations/0003_evento_hora.py @@ -0,0 +1,19 @@ +# Generated by Django 4.2 on 2024-10-01 11:43 + +from django.db import migrations, models +import django.utils.timezone + + +class Migration(migrations.Migration): + + dependencies = [ + ('eventos', '0002_initial'), + ] + + operations = [ + migrations.AddField( + model_name='evento', + name='hora', + field=models.TimeField(default=django.utils.timezone.now), + ), + ] diff --git a/JugarAlPadel/gestion_reservas/eventos/models.py b/JugarAlPadel/gestion_reservas/eventos/models.py index 987c676..4210bba 100644 --- a/JugarAlPadel/gestion_reservas/eventos/models.py +++ b/JugarAlPadel/gestion_reservas/eventos/models.py @@ -1,11 +1,14 @@ 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.DateTimeField() + hora = models.TimeField(default=timezone.now) # Nuevo campo para la hora + plazas_disponibles = models.PositiveIntegerField() def __str__(self): diff --git a/JugarAlPadel/gestion_reservas/eventos/views.py b/JugarAlPadel/gestion_reservas/eventos/views.py index 8a477eb..67207f7 100644 --- a/JugarAlPadel/gestion_reservas/eventos/views.py +++ b/JugarAlPadel/gestion_reservas/eventos/views.py @@ -1,12 +1,12 @@ from django.shortcuts import render, get_object_or_404, redirect -from django.contrib.auth.decorators import login_required +from django.contrib.auth.decorators import login_required, user_passes_test from django.contrib import messages -from django.contrib.auth.decorators import user_passes_test from django.core.mail import send_mail from django.conf import settings from .models import Evento, Reserva from .forms import EventoForm +from reymotausers.models import ReyMotaUser @login_required @@ -30,7 +30,7 @@ def reservar_evento(request, evento_id): f'Detalles del evento:\n' \ f'Nombre: {evento.nombre}\n' \ f'Descripción: {evento.descripcion}\n' \ - f'Fecha: {evento.fecha}\n' \ + f'Fecha: {evento.fecha.strftime("%d/%b/%y")} a las {evento.hora.hour}\n' \ f'\n¡Gracias por inscribirte!\n\n' send_mail( @@ -59,6 +59,29 @@ def anular_reserva(request, evento_id): if Reserva.objects.filter(evento=evento, usuario=request.user).exists(): messages.error(request, 'Vamos a solicitar la baja.') + admin = ReyMotaUser.objects.filter(is_staff=True) + + for i in admin: + if i.nombre == "Tino": + # Enviar un correo con la información del evento + asunto = f'Solicitud de cancelación en {evento.nombre}' + mensaje = f'Hola,\n\n' \ + f'{request.user.nombre} ha solicitado la baja en el "{evento.nombre}".\n' \ + f'Detalles del evento:\n' \ + f'Nombre: {evento.nombre}\n' \ + f'Descripción: {evento.descripcion}\n' \ + f'Fecha: {evento.fecha.strftime("%d/%b/%y")} a las {evento.hora.hour}\n' \ + f'\n{request.user.nombre}, recuerda que si no encontramos a nadie y la plaza queda\n' \ + f'desierta el coste de tu plaza en el pozo lo tienes que abonar tú\n\n' + + send_mail( + asunto, + mensaje, + settings.DEFAULT_FROM_EMAIL, + [request.user.email, i.email], + fail_silently=False, + ) + return redirect('eventos:lista_eventos') return redirect('eventos:lista_eventos') @@ -90,9 +113,6 @@ def principal(request): return render(request, 'eventos/lista_eventos.html') - - - def ayuda(request): return render(request, 'eventos/help.html') diff --git a/JugarAlPadel/gestion_reservas/setup.cfg b/JugarAlPadel/gestion_reservas/setup.cfg new file mode 100644 index 0000000..bf750d2 --- /dev/null +++ b/JugarAlPadel/gestion_reservas/setup.cfg @@ -0,0 +1,2 @@ +[flake8] +max-line-length = 99 \ No newline at end of file diff --git a/JugarAlPadel/gestion_reservas/templates/eventos/lista_eventos.html b/JugarAlPadel/gestion_reservas/templates/eventos/lista_eventos.html index 94bf46a..9b4411d 100644 --- a/JugarAlPadel/gestion_reservas/templates/eventos/lista_eventos.html +++ b/JugarAlPadel/gestion_reservas/templates/eventos/lista_eventos.html @@ -31,6 +31,7 @@