Browse Source

Opción de publicación de eventos

politica
Celestino Rey 1 year ago
parent
commit
3c315ccbdd
6 changed files with 36 additions and 14 deletions
  1. +1
    -1
      JugarAlPadel/gestion_reservas/eventos/forms.py
  2. +1
    -0
      JugarAlPadel/gestion_reservas/eventos/models.py
  3. +1
    -0
      JugarAlPadel/gestion_reservas/eventos/urls.py
  4. +20
    -2
      JugarAlPadel/gestion_reservas/eventos/views.py
  5. +2
    -2
      JugarAlPadel/gestion_reservas/templates/eventos/crear_evento.html
  6. +11
    -9
      JugarAlPadel/gestion_reservas/templates/eventos/lista_eventos.html

+ 1
- 1
JugarAlPadel/gestion_reservas/eventos/forms.py View File

@ -7,7 +7,7 @@ from .models import ListaEspera
class EventoForm(forms.ModelForm): class EventoForm(forms.ModelForm):
class Meta: class Meta:
model = Evento model = Evento
fields = ['nombre', 'descripcion', 'fecha', 'hora', 'plazas_disponibles']
fields = ['nombre', 'descripcion', 'fecha', 'hora', 'plazas_disponibles', 'publicado']
widgets = { widgets = {
'fecha': forms.DateInput(attrs={'type': 'date'}), 'fecha': forms.DateInput(attrs={'type': 'date'}),


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

@ -10,6 +10,7 @@ class Evento(models.Model):
hora = models.TimeField(default=timezone.now) # Nuevo campo para la hora hora = models.TimeField(default=timezone.now) # Nuevo campo para la hora
plazas_disponibles = models.PositiveIntegerField() plazas_disponibles = models.PositiveIntegerField()
publicado = models.BooleanField(default=False) # Nuevo campo para la publicación
def __str__(self): def __str__(self):
return self.nombre return self.nombre


+ 1
- 0
JugarAlPadel/gestion_reservas/eventos/urls.py View File

@ -9,6 +9,7 @@ urlpatterns = [
path('eventos/apuntar_lista_espera/<int:evento_id>/', views.apuntar_lista_espera, name='apuntar_lista_espera'), path('eventos/apuntar_lista_espera/<int:evento_id>/', views.apuntar_lista_espera, name='apuntar_lista_espera'),
path('eventos/ayuda/', views.ayuda, name='ayuda'), path('eventos/ayuda/', views.ayuda, name='ayuda'),
path('eventos/crear/', views.crear_evento, name='crear_evento'), # URL para crear un evento 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/<int:evento_id>/', path('reservar/<int:evento_id>/',
views.reservar_evento, name='reservar_evento'), views.reservar_evento, name='reservar_evento'),


+ 20
- 2
JugarAlPadel/gestion_reservas/eventos/views.py View File

@ -52,7 +52,11 @@ def reservar_evento(request, evento_id):
@login_required @login_required
def lista_eventos(request): 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 # Crear un diccionario que mapea cada evento con un booleano indicando si el usuario ya ha reservado
eventos_con_reserva = [] eventos_con_reserva = []
@ -73,7 +77,8 @@ def lista_eventos(request):
'plazas_disponibles': evento.plazas_disponibles, 'plazas_disponibles': evento.plazas_disponibles,
'plazas_restantes': evento.plazas_restantes, 'plazas_restantes': evento.plazas_restantes,
'en_espera': en_espera, '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}) 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}) 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 @login_required
def apuntar_lista_espera(request, evento_id): def apuntar_lista_espera(request, evento_id):
evento = get_object_or_404(Evento, id=evento_id) evento = get_object_or_404(Evento, id=evento_id)


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

@ -7,13 +7,13 @@
{% block content %} {% block content %}
<div class="column is-4 is-offset-4"> <div class="column is-4 is-offset-4">
<h3>{% if form.instance.pk %}Editar evento{% else %}Nuevo evento{% endif %}</h3>
<h3>{% if evento %}Editar evento{% else %}Nuevo evento{% endif %}</h3>
<div class="box"> <div class="box">
<form method="POST" enctype="multipart/form-data"> <form method="POST" enctype="multipart/form-data">
{% csrf_token %} {% csrf_token %}
{{ form.as_p }} {{ form.as_p }}
<div class="text mb-3"> <div class="text mb-3">
<button type="submit" class="btn app-btn-primary w-100 theme-btn mx-auto">Guardar</button>
<button type="submit" class="btn app-btn-primary w-100 theme-btn mx-auto">{% if evento %}Actualizar{% else %}Crear{% endif %} Evento</button>
</div> </div>
</form> </form>
</div> </div>


+ 11
- 9
JugarAlPadel/gestion_reservas/templates/eventos/lista_eventos.html View File

@ -47,18 +47,20 @@
<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>
{% if not evento.inscrito %}
{% if evento.plazas_restantes > 0 %}
<td class="cell"><a href="{% url 'eventos:reservar_evento' evento.id %}">Reservar</a></td>
{% else %}
{% if not evento.en_espera %}
<td class="cell"><a href="{% url 'eventos:apuntar_lista_espera' evento.evento.id %}">Apuntarse a la lista de espera</a></td>
{% if evento.evento.publicado or user.is_staff %} <!-- Solo mostrar eventos publicados a usuarios -->
{% if not evento.inscrito %}
{% if evento.plazas_restantes > 0 %}
<td class="cell"><a href="{% url 'eventos:reservar_evento' evento.id %}">Reservar</a></td>
{% else %} {% else %}
<td class="cell"><p>Ya estás en la lista de espera.</p></td>
{% if not evento.en_espera %}
<td class="cell"><a href="{% url 'eventos:apuntar_lista_espera' evento.evento.id %}">Apuntarse a la lista de espera</a></td>
{% else %}
<td class="cell"><p>Ya estás en la lista de espera.</p></td>
{% endif %}
{% endif %} {% endif %}
{% else %}
<td class="cell"><p>Estás dentro.</p></td>
{% endif %} {% endif %}
{% else %}
<td class="cell"><p>Estás dentro.</p></td>
{% endif %} {% endif %}
</tr> </tr>
{% endfor %} {% endfor %}


Loading…
Cancel
Save