|
|
@@ -7,6 +7,7 @@ from django.core.mail import EmailMultiAlternatives
|
|
|
from django.conf import settings
|
|
|
from django.template.loader import render_to_string
|
|
|
from django.utils import timezone
|
|
|
+from datetime import date
|
|
|
|
|
|
import logging
|
|
|
|
|
|
@@ -50,13 +51,13 @@ def reservar_evento(request, evento_id):
|
|
|
to_email = request.user.email
|
|
|
cc_email = [settings.ADMIN_EMAIL]
|
|
|
|
|
|
- texto = f'Hola {request.user.nombre},\n\n' \
|
|
|
- f'Te has inscrito correctamente en el evento "{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}\n' \
|
|
|
- f'\n¡Gracias por inscribirte!\n\n'
|
|
|
+ texto = f'Hola {request.user.nombre}, \n\n' \
|
|
|
+ f'Te has inscrito correctamente en el evento "{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}\n' \
|
|
|
+ f'\n¡Gracias por inscribirte!\n\n'
|
|
|
|
|
|
html_content = render_to_string('emails/confirmacion_reserva.html', {'evento': evento, 'usuario': request.user})
|
|
|
|
|
|
@@ -365,11 +366,31 @@ def enviar_correo_inscritos(request, evento_id):
|
|
|
return render(request, 'eventos/enviar_correo_inscritos.html', {'form': form, 'evento': evento})
|
|
|
|
|
|
|
|
|
+@login_required
|
|
|
def estadisticas_por_usuario(request):
|
|
|
- usuarios = User.objects.annotate(num_eventos=Count("reserva__evento")).order_by("-num_eventos")
|
|
|
- return render(request, "eventos/estadisticas_usuarios.html", {"usuarios": usuarios})
|
|
|
+ today = date.today()
|
|
|
+
|
|
|
+ mes_comienzo_temporada = settings.MES_COMIENZO_TEMPORADA
|
|
|
|
|
|
+ if today.month < mes_comienzo_temporada:
|
|
|
+ filtro_fecha = date(today.year - 1, mes_comienzo_temporada, 1)
|
|
|
+ else:
|
|
|
+ filtro_fecha = date(today.year, mes_comienzo_temporada, 1)
|
|
|
|
|
|
+ reservas = Reserva.objects.filter(evento__fecha__gte=filtro_fecha)
|
|
|
+
|
|
|
+ datos = (
|
|
|
+ reservas.values('usuario__id', 'usuario__email', 'usuario__nombre')
|
|
|
+ .annotate(eventos_inscritos=Count('evento', distinct=True))
|
|
|
+ .order_by('-eventos_inscritos')
|
|
|
+ )
|
|
|
+
|
|
|
+ return render(request, 'eventos/estadisticas_usuarios.html', {
|
|
|
+ 'datos': datos,
|
|
|
+ 'desde': filtro_fecha,
|
|
|
+ })
|
|
|
+
|
|
|
+@login_required
|
|
|
def eventos_por_usuario(request, usuario_id):
|
|
|
usuario = get_object_or_404(User, pk=usuario_id)
|
|
|
reservas = Reserva.objects.filter(usuario=usuario).select_related("evento")
|