|
|
# Create your views here.
|
|
|
from django.shortcuts import render, get_object_or_404, redirect
|
|
|
from django.contrib.auth.decorators import login_required
|
|
|
|
|
|
from rest_framework.response import Response
|
|
|
from rest_framework.decorators import api_view
|
|
|
|
|
|
from .models import Entrenador, Deportista, Macrociclo
|
|
|
from .forms import EntrenadorForm, DeportistaForm, MacrocicloForm
|
|
|
from .serializers import EntrenadorSerializer, DeportistaSerializer, MacrocicloSerializer
|
|
|
|
|
|
|
|
|
@login_required
|
|
|
def principal(request):
|
|
|
entrenadores = Entrenador.objects.all()
|
|
|
deportistas = Deportista.objects.all()
|
|
|
|
|
|
return render(request, 'macrociclos/index.html', {'entrenadores': entrenadores, 'deportistas': deportistas})
|
|
|
|
|
|
|
|
|
# Vistas para los entrenadores
|
|
|
|
|
|
@login_required
|
|
|
def lista_entrenadores(request):
|
|
|
entrenadores = Entrenador.objects.all()
|
|
|
return render(request, 'macrociclos/lista_entrenadores.html', {'entrenadores': entrenadores})
|
|
|
|
|
|
|
|
|
@login_required
|
|
|
def nuevo_entrenador(request):
|
|
|
if request.method == 'POST':
|
|
|
form = EntrenadorForm(request.POST, request.FILES)
|
|
|
if form.is_valid():
|
|
|
form.save()
|
|
|
return redirect('macrociclos:lista_entrenadores')
|
|
|
else:
|
|
|
form = EntrenadorForm()
|
|
|
return render(request, 'macrociclos/form_entrenador.html', {'form': form})
|
|
|
|
|
|
|
|
|
@login_required
|
|
|
def detalle_entrenador(request, entrenador_id):
|
|
|
entrenador = get_object_or_404(Entrenador, pk=entrenador_id)
|
|
|
return render(request, 'macrociclos/detalle_entrenador.html', {'entrenador': entrenador})
|
|
|
|
|
|
|
|
|
@login_required
|
|
|
def editar_entrenador(request, entrenador_id):
|
|
|
entrenador = get_object_or_404(Entrenador, pk=entrenador_id)
|
|
|
if request.method == 'POST':
|
|
|
form = EntrenadorForm(request.POST, request.FILES, instance=entrenador)
|
|
|
if form.is_valid():
|
|
|
form.save()
|
|
|
return redirect('macrociclos:lista_entrenadores')
|
|
|
else:
|
|
|
form = EntrenadorForm(instance=entrenador)
|
|
|
return render(request, 'macrociclos/form_entrenador.html', {'form': form})
|
|
|
|
|
|
|
|
|
@login_required
|
|
|
def eliminar_entrenador(request, entrenador_id):
|
|
|
entrenador = get_object_or_404(Entrenador, pk=entrenador_id)
|
|
|
entrenador.delete()
|
|
|
return redirect('macrociclos:lista_entrenadores')
|
|
|
|
|
|
|
|
|
# Vistas para los deportistas
|
|
|
@login_required
|
|
|
def lista_deportistas(request):
|
|
|
deportistas = Deportista.objects.all()
|
|
|
return render(request, 'macrociclos/lista_deportistas.html', {'deportistas': deportistas})
|
|
|
|
|
|
|
|
|
@login_required
|
|
|
def nuevo_deportista(request):
|
|
|
|
|
|
deportistas = Deportista.objects.all() # vamos a ver si hay deportistas dados de alta
|
|
|
|
|
|
if deportistas:
|
|
|
if request.method == 'POST':
|
|
|
form = DeportistaForm(request.POST, request.FILES)
|
|
|
if form.is_valid():
|
|
|
form.save()
|
|
|
return redirect('macrociclos:lista_deportistas')
|
|
|
else:
|
|
|
form = DeportistaForm()
|
|
|
return render(request, 'macrociclos/form_deportista.html', {'form': form})
|
|
|
else:
|
|
|
return render(request, 'macrociclos/index.html')
|
|
|
|
|
|
|
|
|
@login_required
|
|
|
def detalle_deportista(request, deportista_id):
|
|
|
deportista = get_object_or_404(Entrenador, pk=deportista_id)
|
|
|
return render(request, 'macrociclos/detalle_deportista.html', {'deportista': deportista})
|
|
|
|
|
|
|
|
|
@login_required
|
|
|
def editar_deportista(request, deportista_id):
|
|
|
deportista = get_object_or_404(Deportista, pk=deportista_id)
|
|
|
|
|
|
if request.method == 'POST':
|
|
|
form = DeportistaForm(request.POST, request.FILES)
|
|
|
if form.is_valid():
|
|
|
form.save()
|
|
|
return redirect('macrociclos:lista_deportistas')
|
|
|
else:
|
|
|
form = DeportistaForm()
|
|
|
return render(request, 'macrociclos/form_deportista.html', {'form': form})
|
|
|
|
|
|
|
|
|
@login_required
|
|
|
def eliminar_deportista(request, deportista_id):
|
|
|
deportista = Deportista.objects.get(pk=deportista_id)
|
|
|
deportista.delete()
|
|
|
return redirect('macrociclos:lista_deportistas')
|
|
|
|
|
|
|
|
|
# Vistas para los macrociclos
|
|
|
@login_required
|
|
|
def lista_macrociclos(request):
|
|
|
macrociclos = Macrociclo.objects.all()
|
|
|
return render(request, 'macrociclos/lista_macrociclos.html', {'macrociclos': macrociclos})
|
|
|
|
|
|
@login_required
|
|
|
def nuevo_macrociclo(request):
|
|
|
if request.method == 'POST':
|
|
|
form = MacrocicloForm(request.POST)
|
|
|
if form.is_valid():
|
|
|
form.save()
|
|
|
return redirect('macrociclos:lista_macrociclos')
|
|
|
else:
|
|
|
form = MacrocicloForm()
|
|
|
return render(request, 'macrociclos/form_macrociclo.html', {'form': form})
|
|
|
|
|
|
@login_required
|
|
|
def detalle_macrociclo(request, macrociclo_id):
|
|
|
macrociclo = get_object_or_404(Macrociclo, pk=macrociclo_id)
|
|
|
return render(request, 'macrociclos/detalle_macrociclo.html', {'macrociclo': macrociclo})
|
|
|
|
|
|
@login_required
|
|
|
def editar_macrociclo(request, macrociclo_id):
|
|
|
macrociclo = get_object_or_404(Macrociclo, pk=macrociclo_id)
|
|
|
if request.method == 'POST':
|
|
|
form = MacrocicloForm(request.POST, instance=macrociclo)
|
|
|
if form.is_valid():
|
|
|
form.save()
|
|
|
return redirect('macrociclos:lista_macrociclos')
|
|
|
else:
|
|
|
form = MacrocicloForm(instance=macrociclo)
|
|
|
return render(request, 'macrociclos/form_macrociclo.html', {'form': form})
|
|
|
|
|
|
@login_required
|
|
|
def eliminar_macrociclo(request, macrociclo_id):
|
|
|
macrociclo = get_object_or_404(Macrociclo, pk=macrociclo_id)
|
|
|
macrociclo.delete()
|
|
|
return redirect('macrociclos:lista_macrociclos')
|
|
|
|
|
|
#
|
|
|
# API
|
|
|
#
|
|
|
|
|
|
@api_view(['GET'])
|
|
|
def api_lista_entrenadores(request):
|
|
|
"""Devuelve la lista de todos los entrenadores."""
|
|
|
entrenadores = Entrenador.objects.all()
|
|
|
serializer = EntrenadorSerializer(entrenadores, many=True)
|
|
|
return Response(serializer.data)
|
|
|
|
|
|
|
|
|
@api_view(['GET'])
|
|
|
def api_detalle_entrenador(request, entrenador_id):
|
|
|
"""Devuelve los detalles de un entrenador específico."""
|
|
|
try:
|
|
|
entrenador = Entrenador.objects.get(id=entrenador_id)
|
|
|
serializer = EntrenadorSerializer(entrenador)
|
|
|
return Response(serializer.data)
|
|
|
except Entrenador.DoesNotExist:
|
|
|
return Response({'error': 'Entrenador no encontrado'}, status=404)
|
|
|
|
|
|
|
|
|
@api_view(['GET'])
|
|
|
def api_lista_deportistas(request):
|
|
|
"""Devuelve la lista de todos los deportistas."""
|
|
|
deportistas = Deportista.objects.all()
|
|
|
serializer = DeportistaSerializer(deportistas, many=True)
|
|
|
return Response(serializer.data)
|
|
|
|
|
|
|
|
|
@api_view(['GET'])
|
|
|
def api_detalle_deportista(request, entrenador_id):
|
|
|
"""Devuelve los detalles de un entrenador específico."""
|
|
|
try:
|
|
|
entrenador = Deportista.objects.get(id=entrenador_id)
|
|
|
serializer = DeportistaSerializer(entrenador)
|
|
|
return Response(serializer.data)
|
|
|
except Deportista.DoesNotExist:
|
|
|
return Response({'error': 'Deportista no encontrado'}, status=404)
|
|
|
|
|
|
@api_view(['GET'])
|
|
|
def api_lista_macrociclos(request):
|
|
|
"""Devuelve la lista de todos los macrociclos."""
|
|
|
macrociclos = Macrociclo.objects.all()
|
|
|
serializer = MacrocicloSerializer(macrociclos, many=True)
|
|
|
return Response(serializer.data)
|
|
|
|
|
|
@api_view(['GET'])
|
|
|
def api_detalle_macrociclo(request, macrociclo_id):
|
|
|
"""Devuelve los detalles de un macrociclo específico."""
|
|
|
try:
|
|
|
macrociclo = Macrociclo.objects.get(id=macrociclo_id)
|
|
|
serializer = MacrocicloSerializer(macrociclo)
|
|
|
return Response(serializer.data)
|
|
|
except Macrociclo.DoesNotExist:
|
|
|
return Response({'error': 'Macrociclo no encontrado'}, status=404)
|