Gestión de temporadas añadida

This commit is contained in:
adrigongv23 2026-06-30 17:39:25 +02:00
parent 97d38a086c
commit 408d4d006e
6 changed files with 398 additions and 158 deletions

View file

@ -0,0 +1,13 @@
from django import forms
from .models import Temporada
class TemporadaForm(forms.ModelForm):
class Meta:
model = Temporada
fields = ['nombre', 'fecha_inicio', 'fecha_fin', 'presupuesto', 'actual', 'miembros']
widgets = {
'fecha_inicio': forms.DateInput(attrs={'type': 'date', 'class': 'form-control'}),
'fecha_fin': forms.DateInput(attrs={'type': 'date', 'class': 'form-control'}),
'miembros': forms.CheckboxSelectMultiple(),
}

View file

@ -1,16 +1,42 @@
from django.shortcuts import render
from django.contrib.auth.decorators import login_required
from temporadas.models import Temporada # Importamos tu modelo Temporada
from django.shortcuts import render, redirect, get_object_or_404
from django.contrib import messages
from django.views.decorators.http import require_POST
from users.decorators import require_rol
from .models import Temporada
from .forms import TemporadaForm
@login_required
def dashboard(request):
# Buscamos en la base de datos la temporada que tenga actual=True.
# Usamos .first() por seguridad para evitar errores si no hubiera ninguna creada todavía.
temporada_activa = Temporada.objects.filter(actual=True).first()
# Metemos los datos en el diccionario de contexto para mandarlos al HTML
context = {
'temporada_actual': temporada_activa
}
return render(request, 'index.html', context)
@require_rol('directiva')
def gestion_temporadas(request):
temporadas = Temporada.objects.all()
return render(request, 'gestion_temporadas.html', {'temporadas': temporadas})
@require_rol('directiva')
def crear_temporada(request):
form = TemporadaForm(request.POST or None)
if request.method == 'POST' and form.is_valid():
form.save()
messages.success(request, 'Temporada creada correctamente.')
return redirect('gestion_temporadas')
return render(request, 'editar_temporada.html', {'form': form, 'temporada': None})
@require_rol('directiva')
def editar_temporada(request, pk):
temporada = get_object_or_404(Temporada, pk=pk)
form = TemporadaForm(request.POST or None, instance=temporada)
if request.method == 'POST' and form.is_valid():
form.save()
messages.success(request, 'Temporada actualizada correctamente.')
return redirect('gestion_temporadas')
return render(request, 'editar_temporada.html', {'form': form, 'temporada': temporada})
@require_rol('directiva')
@require_POST
def eliminar_temporada(request, pk):
temporada = get_object_or_404(Temporada, pk=pk)
temporada.delete()
messages.success(request, f'Temporada "{temporada.nombre}" eliminada.')
return redirect('gestion_temporadas')