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