Browse Source

Mensaje de correo diciendo que se solicita la baja

politica
Celestino Rey 1 year ago
parent
commit
ad6772f2d8
8 changed files with 58 additions and 9 deletions
  1. BIN
      JugarAlPadel/gestion_reservas/db.sqlite3
  2. +1
    -1
      JugarAlPadel/gestion_reservas/entornoPruebas.sh
  3. +5
    -2
      JugarAlPadel/gestion_reservas/eventos/forms.py
  4. +19
    -0
      JugarAlPadel/gestion_reservas/eventos/migrations/0003_evento_hora.py
  5. +3
    -0
      JugarAlPadel/gestion_reservas/eventos/models.py
  6. +26
    -6
      JugarAlPadel/gestion_reservas/eventos/views.py
  7. +2
    -0
      JugarAlPadel/gestion_reservas/setup.cfg
  8. +2
    -0
      JugarAlPadel/gestion_reservas/templates/eventos/lista_eventos.html

BIN
JugarAlPadel/gestion_reservas/db.sqlite3 View File


+ 1
- 1
JugarAlPadel/gestion_reservas/entornoPruebas.sh View File

@ -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"


+ 5
- 2
JugarAlPadel/gestion_reservas/eventos/forms.py View File

@ -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
}

+ 19
- 0
JugarAlPadel/gestion_reservas/eventos/migrations/0003_evento_hora.py View File

@ -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),
),
]

+ 3
- 0
JugarAlPadel/gestion_reservas/eventos/models.py View File

@ -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):


+ 26
- 6
JugarAlPadel/gestion_reservas/eventos/views.py View File

@ -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')


+ 2
- 0
JugarAlPadel/gestion_reservas/setup.cfg View File

@ -0,0 +1,2 @@
[flake8]
max-line-length = 99

+ 2
- 0
JugarAlPadel/gestion_reservas/templates/eventos/lista_eventos.html View File

@ -31,6 +31,7 @@
<tr>
<th class="cell">Evento</th>
<th class="cell">Fecha</th>
<th class="cell">Hora</th>
<th class="cell">Plazas totales</th>
<th class="cell">Plazas disponibles</th>
<th class="cell"></th>
@ -41,6 +42,7 @@
<tr>
<td class="cell"><a href="{% url 'eventos:detalle_evento' evento.id %}">{{ evento.nombre }}</a></td>
<td class="cell">{{ evento.fecha }}</td>
<td class="cell">{{ evento.hora }}</td>
<td class="cell">{{ evento.plazas_disponibles }}</td>
<td class="cell">{{ evento.plazas_restantes }}</td>


Loading…
Cancel
Save