diff --git a/JugarAlPadel/gestion_reservas/eventos/forms.py b/JugarAlPadel/gestion_reservas/eventos/forms.py index 6aadaa3..b49ba07 100644 --- a/JugarAlPadel/gestion_reservas/eventos/forms.py +++ b/JugarAlPadel/gestion_reservas/eventos/forms.py @@ -7,7 +7,7 @@ from .models import ListaEspera class EventoForm(forms.ModelForm): class Meta: model = Evento - fields = ['nombre', 'descripcion', 'fecha', 'hora', 'plazas_disponibles'] + fields = ['nombre', 'descripcion', 'fecha', 'hora', 'plazas_disponibles', 'publicado'] widgets = { 'fecha': forms.DateInput(attrs={'type': 'date'}), diff --git a/JugarAlPadel/gestion_reservas/eventos/models.py b/JugarAlPadel/gestion_reservas/eventos/models.py index ecf1ce1..a51d91f 100644 --- a/JugarAlPadel/gestion_reservas/eventos/models.py +++ b/JugarAlPadel/gestion_reservas/eventos/models.py @@ -10,6 +10,7 @@ class Evento(models.Model): hora = models.TimeField(default=timezone.now) # Nuevo campo para la hora plazas_disponibles = models.PositiveIntegerField() + publicado = models.BooleanField(default=False) # Nuevo campo para la publicación def __str__(self): return self.nombre diff --git a/JugarAlPadel/gestion_reservas/eventos/urls.py b/JugarAlPadel/gestion_reservas/eventos/urls.py index 093f2d3..2a493cf 100644 --- a/JugarAlPadel/gestion_reservas/eventos/urls.py +++ b/JugarAlPadel/gestion_reservas/eventos/urls.py @@ -9,6 +9,7 @@ urlpatterns = [ path('eventos/apuntar_lista_espera//', views.apuntar_lista_espera, name='apuntar_lista_espera'), path('eventos/ayuda/', views.ayuda, name='ayuda'), path('eventos/crear/', views.crear_evento, name='crear_evento'), # URL para crear un evento + path('eventos/editar/', views.editar_evento, name='editar_evento'), # URL para crear un evento path('reservar//', views.reservar_evento, name='reservar_evento'), diff --git a/JugarAlPadel/gestion_reservas/eventos/views.py b/JugarAlPadel/gestion_reservas/eventos/views.py index 7957772..f5ec482 100644 --- a/JugarAlPadel/gestion_reservas/eventos/views.py +++ b/JugarAlPadel/gestion_reservas/eventos/views.py @@ -52,7 +52,11 @@ def reservar_evento(request, evento_id): @login_required def lista_eventos(request): - eventos = Evento.objects.all() + # Solo mostrar los eventos publicados a los usuarios normales + if request.user.is_staff: + eventos = Evento.objects.all() # Los administradores ven todos los eventos + else: + eventos = Evento.objects.filter(publicado=True) # Los usuarios ven solo eventos publicados # Crear un diccionario que mapea cada evento con un booleano indicando si el usuario ya ha reservado eventos_con_reserva = [] @@ -73,7 +77,8 @@ def lista_eventos(request): 'plazas_disponibles': evento.plazas_disponibles, 'plazas_restantes': evento.plazas_restantes, 'en_espera': en_espera, - 'usuario': request.user + 'usuario': request.user, + 'publicado': evento.publicado }) return render(request, 'eventos/lista_eventos.html', {'eventos_con_reserva': eventos_con_reserva}) @@ -118,6 +123,19 @@ def crear_evento(request): return render(request, 'eventos/crear_evento.html', {'form': form}) +@user_passes_test(lambda u: u.is_staff) +def editar_evento(request, evento_id): + evento = get_object_or_404(Evento, id=evento_id) + if request.method == 'POST': + form = EventoForm(request.POST, instance=evento) + if form.is_valid(): + form.save() + return redirect('lista_eventos') + else: + form = EventoForm(instance=evento) + return render(request, 'crear_evento.html', {'form': form, 'evento': evento}) + + @login_required def apuntar_lista_espera(request, evento_id): evento = get_object_or_404(Evento, id=evento_id) diff --git a/JugarAlPadel/gestion_reservas/templates/eventos/crear_evento.html b/JugarAlPadel/gestion_reservas/templates/eventos/crear_evento.html index fd96685..dfd158a 100644 --- a/JugarAlPadel/gestion_reservas/templates/eventos/crear_evento.html +++ b/JugarAlPadel/gestion_reservas/templates/eventos/crear_evento.html @@ -7,13 +7,13 @@ {% block content %}
-

{% if form.instance.pk %}Editar evento{% else %}Nuevo evento{% endif %}

+

{% if evento %}Editar evento{% else %}Nuevo evento{% endif %}

{% csrf_token %} {{ form.as_p }}
- +
diff --git a/JugarAlPadel/gestion_reservas/templates/eventos/lista_eventos.html b/JugarAlPadel/gestion_reservas/templates/eventos/lista_eventos.html index e3894a5..e79233c 100644 --- a/JugarAlPadel/gestion_reservas/templates/eventos/lista_eventos.html +++ b/JugarAlPadel/gestion_reservas/templates/eventos/lista_eventos.html @@ -47,18 +47,20 @@ {{ evento.plazas_disponibles }} {{ evento.plazas_restantes }} - {% if not evento.inscrito %} - {% if evento.plazas_restantes > 0 %} - Reservar - {% else %} - {% if not evento.en_espera %} - Apuntarse a la lista de espera + {% if evento.evento.publicado or user.is_staff %} + {% if not evento.inscrito %} + {% if evento.plazas_restantes > 0 %} + Reservar {% else %} -

Ya estás en la lista de espera.

+ {% if not evento.en_espera %} + Apuntarse a la lista de espera + {% else %} +

Ya estás en la lista de espera.

+ {% endif %} {% endif %} + {% else %} +

Estás dentro.

{% endif %} - {% else %} -

Estás dentro.

{% endif %} {% endfor %}