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 CSRF_TRUSTED_ORIGINS="http://localhost"
export DEBUG="False"
export DEBUG="True"
export SECRET_KEY="hola" export SECRET_KEY="hola"
export DJANGO_ALLOWED_HOSTS="localhost" 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 EventoForm(forms.ModelForm):
class Meta: class Meta:
model = Evento 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 django.db import models
from reymotausers.models import ReyMotaUser from reymotausers.models import ReyMotaUser
from django.utils import timezone
class Evento(models.Model): class Evento(models.Model):
nombre = models.CharField(max_length=100) nombre = models.CharField(max_length=100)
descripcion = models.TextField() descripcion = models.TextField()
fecha = models.DateTimeField() fecha = models.DateTimeField()
hora = models.TimeField(default=timezone.now) # Nuevo campo para la hora
plazas_disponibles = models.PositiveIntegerField() plazas_disponibles = models.PositiveIntegerField()
def __str__(self): 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.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 import messages
from django.contrib.auth.decorators import user_passes_test
from django.core.mail import send_mail from django.core.mail import send_mail
from django.conf import settings from django.conf import settings
from .models import Evento, Reserva from .models import Evento, Reserva
from .forms import EventoForm from .forms import EventoForm
from reymotausers.models import ReyMotaUser
@login_required @login_required
@ -30,7 +30,7 @@ def reservar_evento(request, evento_id):
f'Detalles del evento:\n' \ f'Detalles del evento:\n' \
f'Nombre: {evento.nombre}\n' \ f'Nombre: {evento.nombre}\n' \
f'Descripción: {evento.descripcion}\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' f'\n¡Gracias por inscribirte!\n\n'
send_mail( send_mail(
@ -59,6 +59,29 @@ def anular_reserva(request, evento_id):
if Reserva.objects.filter(evento=evento, usuario=request.user).exists(): if Reserva.objects.filter(evento=evento, usuario=request.user).exists():
messages.error(request, 'Vamos a solicitar la baja.') 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')
return redirect('eventos:lista_eventos') return redirect('eventos:lista_eventos')
@ -90,9 +113,6 @@ def principal(request):
return render(request, 'eventos/lista_eventos.html') return render(request, 'eventos/lista_eventos.html')
def ayuda(request): def ayuda(request):
return render(request, 'eventos/help.html') 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> <tr>
<th class="cell">Evento</th> <th class="cell">Evento</th>
<th class="cell">Fecha</th> <th class="cell">Fecha</th>
<th class="cell">Hora</th>
<th class="cell">Plazas totales</th> <th class="cell">Plazas totales</th>
<th class="cell">Plazas disponibles</th> <th class="cell">Plazas disponibles</th>
<th class="cell"></th> <th class="cell"></th>
@ -41,6 +42,7 @@
<tr> <tr>
<td class="cell"><a href="{% url 'eventos:detalle_evento' evento.id %}">{{ evento.nombre }}</a></td> <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.fecha }}</td>
<td class="cell">{{ evento.hora }}</td>
<td class="cell">{{ evento.plazas_disponibles }}</td> <td class="cell">{{ evento.plazas_disponibles }}</td>
<td class="cell">{{ evento.plazas_restantes }}</td> <td class="cell">{{ evento.plazas_restantes }}</td>


Loading…
Cancel
Save