From ad6772f2d8645e4461ca80a051fb929c7ee1c89f Mon Sep 17 00:00:00 2001 From: Celestino Rey Date: Tue, 1 Oct 2024 15:38:04 +0200 Subject: [PATCH] Mensaje de correo diciendo que se solicita la baja --- JugarAlPadel/gestion_reservas/db.sqlite3 | Bin 147456 -> 155648 bytes .../gestion_reservas/entornoPruebas.sh | 2 +- .../gestion_reservas/eventos/forms.py | 7 ++-- .../eventos/migrations/0003_evento_hora.py | 19 +++++++++++ .../gestion_reservas/eventos/models.py | 3 ++ .../gestion_reservas/eventos/views.py | 32 ++++++++++++++---- JugarAlPadel/gestion_reservas/setup.cfg | 2 ++ .../templates/eventos/lista_eventos.html | 2 ++ 8 files changed, 58 insertions(+), 9 deletions(-) create mode 100644 JugarAlPadel/gestion_reservas/eventos/migrations/0003_evento_hora.py create mode 100644 JugarAlPadel/gestion_reservas/setup.cfg diff --git a/JugarAlPadel/gestion_reservas/db.sqlite3 b/JugarAlPadel/gestion_reservas/db.sqlite3 index 0b7ad00bdf2bd03f3f8d0d1438378ff6af27d840..35775c17f2f312bdd63c1b06915aae35829e79bb 100644 GIT binary patch delta 1628 zcma)+ZERCj7{|})z2(03-lrX|fD7cVY>>LOyRU6;*^*U)F?;ENj0{5v*;s`o&=N)@ zfF!#LAB@Seu@5Ct41|b&z>w<6(uAxOf;Ydfk^}nYCPu_1Q$Qh-t)`7 zdH#L==k)&185t2q&I)67kpYCzGBOsEfyqdXH=DHsDB0H$Bu@djONf@ieYiUr*>Mn* z+8B9$Dk>93#oZHJxG5m+_S}_XCKU~$x4SeiIm z{D37*Pma6q9vWkhvpdc*z}zfz8vdH)2bmhrRhY_66VDID#VI7PqbT&UcvU#TpW|-N zdpmfT9hGOLQD#|S9RGpar8VLd&UkJF3p|}GspLJkgQ@IZiJRw9qsDQ!zVfYxYnaMx zH=e(?Aq>Y5`A2_)TksQn4_Dw4d;u5WQ}`G@gh_Z0-hpGDy9Zi>490wzk^`TLPuXY4 zr{q)gDfr}la^)+h@N#11A@~#S!LRTO{7B4Z;4)lw_mxXmaWo&;urIcGYkzS|VKA0e_r+cu zDr_4ZCbt`6`O@}*orT!O{rflak0;B_8mX+IB^{D0!^whxA|{rxkkgIwUo*JA&dlm5 z8a*p*lW(g+1nH{4EFYY~OJ8^>Fw>TvPPfTK;8X=xzEmuz33YX8Z%Hi_)#3BU2Kom} z4ENs&RQnsYV_UitBI~J6z@h$27uinMFq0|AB7#=wk-J9S8~dtd+p$bD(% z&p!CMma)nDg@3(MzV|{ql{M4Jlx}FIwSp(r>dMo;bw{;oYi2s5w{oOfU3TUPo&DaH zmbO!w%AOhgI>`-OLnLFiZ58 zAWp*+q42jr;E`O0Geo`~!JBXu_QHD4eI8b-ks!)pVb0q~XKf>CJLEVr7&ZL=3L}*? zbR%Urg8#?ylGBVmX9ETZ%43BITx~}qY^Lnh&94KzMa=Sx0YWdAHf}nU=^7=`Mi=zatq>d ze4wd(xD(go#`07r{(V8S8lwkxOx-oKy`biMde!{8uC93b{SJJw5^u+Oh8$|R(R1su Y=!P4(1w9Gu>gCnlI9mCt3opU{0IX1N>;M1& delta 637 zcmZ9IO=uHQ5XWcUCcD{evy=407E4PjDRr@FcC$4lg&qQa(252`uzIkkAd1$CqBJUI zEl5F$$_jf>v>CX>3tL8i_F9Z~09>%MBw zPrXnr4Hd9Pv$BzuWw3vreY7|oSQcWi>PR}i_twU-S@6D^*wVC9egaX@AaqB1CVmK( z0+w(&QjhFwDk~*MSb%lVl(Fz4c)8>3kl>Z};D8uVZX&ssg3gs=>|HZoA>=Q7V@IFV zu4y=X-5H-?z1ZcPnP5K^&5FjQ_FMuj! zb1WN5pa^}Pyn3Bu{jL7dMRf*fiB8ghT327HGp?0ay_t`A3!4P00XJ$;jcVLzmEu7G zkx9Ojz()g{zG2#cP15J;RNo?fN!rB!kr7(rWC7?QtxGM$GhxVGd@}x{*#f4~XsU5jiFQN2SsuLz%(MZgY58e;Q@_AEKF^H~;_u 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 @@ Evento Fecha + Hora Plazas totales Plazas disponibles @@ -41,6 +42,7 @@ {{ evento.nombre }} {{ evento.fecha }} + {{ evento.hora }} {{ evento.plazas_disponibles }} {{ evento.plazas_restantes }}