From 5db7a67a08b6707060ef907efcee8d688ebaf9ca Mon Sep 17 00:00:00 2001 From: Celestino Rey Date: Tue, 13 May 2025 11:54:51 +0200 Subject: [PATCH] =?UTF-8?q?Posibilida=20de=20borrar=20a=20usuarios=20de=20?= =?UTF-8?q?eventos=20desde=20la=20lista=20de=20estad=C3=ADsticas?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- JugarAlPadel/K8S/Makefile | 2 +- JugarAlPadel/K8S/env-prod-configmap.yaml | 4 +- JugarAlPadel/gestion_reservas/eventos/urls.py | 4 ++ .../gestion_reservas/eventos/views.py | 21 ++++++++++ .../eventos/estadisticas_usuarios.html | 2 +- .../eventos/eventos_por_usuario.html | 39 +++++++++++++++++++ 6 files changed, 68 insertions(+), 4 deletions(-) create mode 100644 JugarAlPadel/gestion_reservas/templates/eventos/eventos_por_usuario.html diff --git a/JugarAlPadel/K8S/Makefile b/JugarAlPadel/K8S/Makefile index c389f2f..17b0fa3 100644 --- a/JugarAlPadel/K8S/Makefile +++ b/JugarAlPadel/K8S/Makefile @@ -1,7 +1,7 @@ export ARQUITECTURA := $(shell lscpu |grep itectur | tr -d ' '| cut -f2 -d':') export REGISTRY=registry.reymota.es -export IMG_VERSION = 0.70.26 +export IMG_VERSION = 0.70.35 export IMG_NGINX_VERSION = 2.3 # limpia todo diff --git a/JugarAlPadel/K8S/env-prod-configmap.yaml b/JugarAlPadel/K8S/env-prod-configmap.yaml index 3675e71..50df4b4 100644 --- a/JugarAlPadel/K8S/env-prod-configmap.yaml +++ b/JugarAlPadel/K8S/env-prod-configmap.yaml @@ -1,7 +1,7 @@ apiVersion: v1 data: - DEBUG: "False" - APP_VERSION: 13.0.1 + DEBUG: "True" + APP_VERSION: 14.0.0 DATABASE: postgres kind: ConfigMap metadata: diff --git a/JugarAlPadel/gestion_reservas/eventos/urls.py b/JugarAlPadel/gestion_reservas/eventos/urls.py index fe4f57a..b82b1ce 100644 --- a/JugarAlPadel/gestion_reservas/eventos/urls.py +++ b/JugarAlPadel/gestion_reservas/eventos/urls.py @@ -25,6 +25,8 @@ urlpatterns = [ path('reservar//', views.reservar_evento, name='reservar_evento'), + path("reservar//eliminar/", views.cancelar_reserva_admin, name="cancelar_reserva_admin"), + path('api/eventos/', api_lista_eventos, name='api_lista_eventos'), path('api/eventos//', api_detalle_evento, name='api_detalle_evento'), @@ -38,5 +40,7 @@ urlpatterns = [ path('api/noticias//', api_detalle_noticia, name='api_detalle_noticia'), path("estadisticas/usuarios/", views.estadisticas_por_usuario, name="estadisticas_por_usuario"), + path("estadisticas/usuarios//", views.eventos_por_usuario, name="eventos_por_usuario"), + ] diff --git a/JugarAlPadel/gestion_reservas/eventos/views.py b/JugarAlPadel/gestion_reservas/eventos/views.py index bd0e8ce..be439d0 100644 --- a/JugarAlPadel/gestion_reservas/eventos/views.py +++ b/JugarAlPadel/gestion_reservas/eventos/views.py @@ -1,6 +1,8 @@ from django.shortcuts import render, get_object_or_404, redirect from django.contrib.auth.decorators import login_required, user_passes_test from django.contrib import messages +from django.contrib.admin.views.decorators import staff_member_required + from django.core.mail import EmailMultiAlternatives from django.conf import settings from django.template.loader import render_to_string @@ -368,3 +370,22 @@ 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}) + +@user_passes_test(lambda u: u.is_staff) +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") + + return render(request, "eventos/eventos_por_usuario.html", { + "usuario": usuario, + "reservas": reservas + }) + + +@staff_member_required +def cancelar_reserva_admin(request, reserva_id): + reserva = get_object_or_404(Reserva, id=reserva_id) + usuario_id = reserva.usuario.id + if request.method == "POST": + reserva.delete() + return redirect("eventos:eventos_por_usuario", usuario_id) diff --git a/JugarAlPadel/gestion_reservas/templates/eventos/estadisticas_usuarios.html b/JugarAlPadel/gestion_reservas/templates/eventos/estadisticas_usuarios.html index aebf936..dc417f9 100644 --- a/JugarAlPadel/gestion_reservas/templates/eventos/estadisticas_usuarios.html +++ b/JugarAlPadel/gestion_reservas/templates/eventos/estadisticas_usuarios.html @@ -13,7 +13,7 @@ {% for usuario in usuarios %} - {{ usuario.get_full_name|default:usuario.nombre }} + {{ usuario.get_full_name|default:usuario.nombre }} {{ usuario.num_eventos }} {% endfor %} diff --git a/JugarAlPadel/gestion_reservas/templates/eventos/eventos_por_usuario.html b/JugarAlPadel/gestion_reservas/templates/eventos/eventos_por_usuario.html new file mode 100644 index 0000000..6c90323 --- /dev/null +++ b/JugarAlPadel/gestion_reservas/templates/eventos/eventos_por_usuario.html @@ -0,0 +1,39 @@ +{% extends "base.html" %} + +{% block content %} +

Eventos en los que participa o ha participado {{ usuario.get_full_name|default:usuario.nombre }}

+ +{% if reservas %} + + + + + + + + + + {% for reserva in reservas %} + + + + + + {% endfor %} + +
EventoFechaAcciones
{{ reserva.evento.nombre }}{{ reserva.evento.fecha }} +
+ {% csrf_token %} + +
+
+ +{% else %} +

No está inscrito en ningún evento.

+{% endif %} + +← Volver a estadísticas +{% endblock %} +