You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

215 lines
7.2 KiB

# 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)