|
|
|
@ -5,88 +5,73 @@ from django.contrib.auth.decorators import login_required |
|
|
|
from rest_framework.response import Response |
|
|
|
from rest_framework.decorators import api_view |
|
|
|
|
|
|
|
from .models import Vehiculo, Repostaje |
|
|
|
from .forms import VehiculoForm, RepostajeForm |
|
|
|
from .serializers import VehiculoSerializer, RepostajeSerializer |
|
|
|
from .models import Entrenador, Deportista, Macrociclo |
|
|
|
from .forms import EntrenadorForm, DeportistaForm, MacrocicloForm |
|
|
|
from .serializers import EntrenadorSerializer, DeportistaSerializer, MacrocicloSerializer |
|
|
|
|
|
|
|
|
|
|
|
@login_required |
|
|
|
def principal(request): |
|
|
|
vehiculos = Vehiculo.objects.all() |
|
|
|
repostajes = Repostaje.objects.all() |
|
|
|
entrenadores = Entrenador.objects.all() |
|
|
|
deportistas = Deportista.objects.all() |
|
|
|
|
|
|
|
return render(request, 'repostajes/index.html', {'vehiculos': vehiculos, 'repostajes': repostajes}) |
|
|
|
return render(request, 'macrociclos/index.html', {'entrenadores': entrenadores, 'deportistas': deportistas}) |
|
|
|
|
|
|
|
|
|
|
|
# Vistas para los vehiculos |
|
|
|
# Vistas para los entrenadores |
|
|
|
@login_required |
|
|
|
def lista_vehiculos(request): |
|
|
|
vehiculos = Vehiculo.objects.all() |
|
|
|
return render(request, 'repostajes/lista_vehiculos.html', {'vehiculos': vehiculos}) |
|
|
|
def lista_entrenadores(request): |
|
|
|
entrenadores = Entrenador.objects.all() |
|
|
|
return render(request, 'macrociclos/lista_entrenadores.html', {'entrenadores': entrenadores}) |
|
|
|
|
|
|
|
|
|
|
|
@login_required |
|
|
|
def detalle_vehiculo(request, vehiculo_id): |
|
|
|
vehiculo = get_object_or_404(Vehiculo, pk=vehiculo_id) |
|
|
|
|
|
|
|
repostajes = Repostaje.objects.filter(vehiculo=vehiculo_id) |
|
|
|
|
|
|
|
return render(request, 'repostajes/detalle_vehiculo.html', {'vehiculo': vehiculo, 'repostajes': repostajes}) |
|
|
|
|
|
|
|
|
|
|
|
@login_required |
|
|
|
def nuevo_vehiculo(request): |
|
|
|
def nuevo_entrenador(request): |
|
|
|
if request.method == 'POST': |
|
|
|
form = VehiculoForm(request.POST, request.FILES) |
|
|
|
form = EntrenadorForm(request.POST, request.FILES) |
|
|
|
if form.is_valid(): |
|
|
|
form.save() |
|
|
|
return redirect('repostajes:lista_vehiculos') |
|
|
|
return redirect('macrociclos:lista_entrenadores') |
|
|
|
else: |
|
|
|
form = VehiculoForm() |
|
|
|
return render(request, 'repostajes/form_vehiculo.html', {'form': form}) |
|
|
|
form = EntrenadorForm() |
|
|
|
return render(request, 'macrociclos/form_entrenador.html', {'form': form}) |
|
|
|
|
|
|
|
|
|
|
|
@login_required |
|
|
|
def editar_vehiculo(request, vehiculo_id): |
|
|
|
vehiculo = get_object_or_404(Vehiculo, pk=vehiculo_id) |
|
|
|
def editar_entrenador(request, entrenador_id): |
|
|
|
entrenador = get_object_or_404(Entrenador, pk=entrenador_id) |
|
|
|
if request.method == 'POST': |
|
|
|
form = VehiculoForm(request.POST, request.FILES, instance=vehiculo) |
|
|
|
form = EntrenadorForm(request.POST, request.FILES, instance=entrenador) |
|
|
|
if form.is_valid(): |
|
|
|
form.save() |
|
|
|
return redirect('repostajes:lista_vehiculos') |
|
|
|
return redirect('macrociclos:lista_entrenadores') |
|
|
|
else: |
|
|
|
form = VehiculoForm(instance=vehiculo) |
|
|
|
return render(request, 'repostajes/form_vehiculo.html', {'form': form}) |
|
|
|
|
|
|
|
|
|
|
|
@login_required |
|
|
|
def eliminar_vehiculo(request, vehiculo_id): |
|
|
|
vehiculo = get_object_or_404(Vehiculo, pk=vehiculo_id) |
|
|
|
vehiculo.delete() |
|
|
|
return redirect('repostajes:lista_vehiculos') |
|
|
|
form = EntrenadorForm(instance=entrenador) |
|
|
|
return render(request, 'macrociclos/form_entrenador.html', {'form': form}) |
|
|
|
|
|
|
|
|
|
|
|
# Vistas para los repostajes |
|
|
|
@login_required |
|
|
|
def lista_repostajes(request): |
|
|
|
repostajes = Repostaje.objects.all() |
|
|
|
return render(request, 'repostajes/lista_repostajes.html', {'repostajes': repostajes}) |
|
|
|
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 detalle_repostaje(request, repostaje_id): |
|
|
|
repostaje = get_object_or_404(Repostaje, pk=repostaje_id) |
|
|
|
return render(request, 'repostajes/detalle_repostaje.html', {'repostaje': repostaje}) |
|
|
|
def lista_deportistas(request): |
|
|
|
deportistas = Deportista.objects.all() |
|
|
|
return render(request, 'macrociclos/lista_deportistas.html', {'deportistas': deportistas}) |
|
|
|
|
|
|
|
|
|
|
|
@login_required |
|
|
|
def nuevo_repostaje(request): |
|
|
|
def nuevo_entrenador(request): |
|
|
|
|
|
|
|
vehiculos = Vehiculo.objects.all() # vamos a ver si hay vehículos dados de alta |
|
|
|
entrenadores = Entrenador.objects.all() # vamos a ver si hay vehículos dados de alta |
|
|
|
|
|
|
|
if vehiculos: |
|
|
|
if entrenadores: |
|
|
|
if request.method == 'POST': |
|
|
|
form = RepostajeForm(request.POST, request.FILES) |
|
|
|
form = DeportistaForm(request.POST, request.FILES) |
|
|
|
if form.is_valid(): |
|
|
|
instancia = form.save(commit=False) |
|
|
|
|
|
|
|
@ -104,13 +89,13 @@ def nuevo_repostaje(request): |
|
|
|
else: |
|
|
|
instancia.precioxlitro = 0 |
|
|
|
|
|
|
|
# lee todos los repostajes del vehículo |
|
|
|
# repostajes = Repostajes.query.filter_by(vehiculo_id=vehiculo_id).all() |
|
|
|
# lee todos los deportistas del vehículo |
|
|
|
# deportistas = Deportistas.query.filter_by(entrenador_id=entrenador_id).all() |
|
|
|
|
|
|
|
if Repostaje.objects.filter(vehiculo_id=instancia.vehiculo): |
|
|
|
repostajes = Repostaje.objects.filter(vehiculo_id=instancia.vehiculo).order_by('-fecha')[0] |
|
|
|
if Deportista.objects.filter(entrenador_id=instancia.entrenador): |
|
|
|
deportistas = Deportista.objects.filter(entrenador_id=instancia.entrenador).order_by('-fecha')[0] |
|
|
|
|
|
|
|
instancia.kmsrecorridos = instancia.kms - repostajes.kms |
|
|
|
instancia.kmsrecorridos = instancia.kms - deportistas.kms |
|
|
|
|
|
|
|
if instancia.kmsrecorridos > 0: |
|
|
|
instancia.consumo = round(instancia.litros * 100 / instancia.kmsrecorridos, 2) |
|
|
|
@ -120,68 +105,68 @@ def nuevo_repostaje(request): |
|
|
|
|
|
|
|
instancia.save() |
|
|
|
|
|
|
|
return redirect('repostajes:lista_repostajes') |
|
|
|
return redirect('macrociclos:lista_deportistas') |
|
|
|
else: |
|
|
|
form = RepostajeForm() |
|
|
|
return render(request, 'repostajes/form_repostaje.html', {'form': form}) |
|
|
|
form = DeportistaForm() |
|
|
|
return render(request, 'macrociclos/form_entrenador.html', {'form': form}) |
|
|
|
else: |
|
|
|
return render(request, 'repostajes/index.html') |
|
|
|
return render(request, 'macrociclos/index.html') |
|
|
|
|
|
|
|
|
|
|
|
@login_required |
|
|
|
def editar_repostaje(request, repostaje_id): |
|
|
|
repostaje = get_object_or_404(Repostaje, pk=repostaje_id) |
|
|
|
def editar_entrenador(request, entrenador_id): |
|
|
|
entrenador = get_object_or_404(Deportista, pk=entrenador_id) |
|
|
|
|
|
|
|
if request.method == 'POST': |
|
|
|
form = RepostajeForm(request.POST, request.FILES, instance=repostaje) |
|
|
|
form = DeportistaForm(request.POST, request.FILES, instance=entrenador) |
|
|
|
if form.is_valid(): |
|
|
|
form.save() |
|
|
|
return redirect('repostajes:lista_repostajes') |
|
|
|
return redirect('macrociclos:lista_deportistas') |
|
|
|
else: |
|
|
|
form = RepostajeForm(instance=repostaje) |
|
|
|
return render(request, 'repostajes/form_repostaje.html', {'form': form}) |
|
|
|
form = DeportistaForm(instance=entrenador) |
|
|
|
return render(request, 'macrociclos/form_entrenador.html', {'form': form}) |
|
|
|
|
|
|
|
|
|
|
|
@login_required |
|
|
|
def eliminar_repostaje(request, repostaje_id): |
|
|
|
repostaje = Repostaje.objects.get(pk=repostaje_id) |
|
|
|
repostaje.delete() |
|
|
|
return redirect('repostajes:lista_repostajes') |
|
|
|
def eliminar_entrenador(request, entrenador_id): |
|
|
|
entrenador = Deportista.objects.get(pk=entrenador_id) |
|
|
|
entrenador.delete() |
|
|
|
return redirect('macrociclos:lista_deportistas') |
|
|
|
|
|
|
|
|
|
|
|
@api_view(['GET']) |
|
|
|
def api_lista_vehiculos(request): |
|
|
|
"""Devuelve la lista de todos los vehiculos.""" |
|
|
|
vehiculos = Vehiculo.objects.all() |
|
|
|
serializer = VehiculoSerializer(vehiculos, many=True) |
|
|
|
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_vehiculo(request, vehiculo_id): |
|
|
|
"""Devuelve los detalles de un vehiculo específico.""" |
|
|
|
def api_detalle_entrenador(request, entrenador_id): |
|
|
|
"""Devuelve los detalles de un entrenador específico.""" |
|
|
|
try: |
|
|
|
vehiculo = Vehiculo.objects.get(id=vehiculo_id) |
|
|
|
serializer = VehiculoSerializer(vehiculo) |
|
|
|
entrenador = Entrenador.objects.get(id=entrenador_id) |
|
|
|
serializer = EntrenadorSerializer(entrenador) |
|
|
|
return Response(serializer.data) |
|
|
|
except Vehiculo.DoesNotExist: |
|
|
|
return Response({'error': 'Vehiculo no encontrado'}, status=404) |
|
|
|
except Entrenador.DoesNotExist: |
|
|
|
return Response({'error': 'Entrenador no encontrado'}, status=404) |
|
|
|
|
|
|
|
|
|
|
|
@api_view(['GET']) |
|
|
|
def api_lista_repostajes(request): |
|
|
|
"""Devuelve la lista de todos los repostajes.""" |
|
|
|
repostajes = Repostaje.objects.all() |
|
|
|
serializer = RepostajeSerializer(repostajes, many=True) |
|
|
|
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_repostaje(request, repostaje_id): |
|
|
|
"""Devuelve los detalles de un repostaje específico.""" |
|
|
|
def api_detalle_entrenador(request, entrenador_id): |
|
|
|
"""Devuelve los detalles de un entrenador específico.""" |
|
|
|
try: |
|
|
|
repostaje = Repostaje.objects.get(id=repostaje_id) |
|
|
|
serializer = RepostajeSerializer(repostaje) |
|
|
|
entrenador = Deportista.objects.get(id=entrenador_id) |
|
|
|
serializer = DeportistaSerializer(entrenador) |
|
|
|
return Response(serializer.data) |
|
|
|
except Repostaje.DoesNotExist: |
|
|
|
return Response({'error': 'Repostaje no encontrado'}, status=404) |
|
|
|
except Deportista.DoesNotExist: |
|
|
|
return Response({'error': 'Deportista no encontrado'}, status=404) |