# Create your views here.
|
|
from django.shortcuts import render, get_object_or_404, redirect
|
|
from django.contrib.auth.decorators import login_required
|
|
|
|
from .models import Proyecto, Accion, Riesgo
|
|
from .forms import ProyectoForm, RiesgoForm
|
|
|
|
import logging
|
|
|
|
|
|
@login_required
|
|
def principal(request):
|
|
proyectos = Proyecto.objects.all()
|
|
riesgos = Riesgo.objects.all()
|
|
|
|
return render(request, 'gestion/index.html', {'proyectos': proyectos, 'riesgos': riesgos})
|
|
|
|
|
|
# Vistas para los proyectos
|
|
@login_required
|
|
def lista_proyectos(request):
|
|
proyectos = Proyecto.objects.all()
|
|
return render(request, 'gestion/lista_proyectos.html', {'proyectos': proyectos})
|
|
|
|
|
|
@login_required
|
|
def detalle_proyecto(request, proyecto_id):
|
|
proyecto = get_object_or_404(Proyecto, pk=proyecto_id)
|
|
|
|
riesgos = Riesgo.objects.filter(proyecto=proyecto_id)
|
|
|
|
return render(request, 'gestion/detalle_proyecto.html', {'proyecto': proyecto, 'riesgos': riesgos})
|
|
|
|
|
|
@login_required
|
|
def nuevo_proyecto(request):
|
|
if request.method == 'POST':
|
|
form = ProyectoForm(request.POST, request.FILES)
|
|
if form.is_valid():
|
|
form.save()
|
|
return redirect('gestion:lista_proyectos')
|
|
else:
|
|
form = ProyectoForm()
|
|
return render(request, 'gestion/form_proyecto.html', {'form': form})
|
|
|
|
|
|
@login_required
|
|
def editar_proyecto(request, proyecto_id):
|
|
proyecto = get_object_or_404(Proyecto, pk=proyecto_id)
|
|
if request.method == 'POST':
|
|
form = ProyectoForm(request.POST, request.FILES, instance=proyecto)
|
|
if form.is_valid():
|
|
form.save()
|
|
return redirect('gestion:lista_proyectos')
|
|
else:
|
|
form = ProyectoForm(instance=proyecto)
|
|
return render(request, 'gestion/form_proyecto.html', {'form': form})
|
|
|
|
|
|
@login_required
|
|
def eliminar_proyecto(request, proyecto_id):
|
|
proyecto = get_object_or_404(Proyecto, pk=proyecto_id)
|
|
proyecto.delete()
|
|
return redirect('gestion:lista_proyectos')
|
|
|
|
|
|
# Vistas para los riesgos
|
|
@login_required
|
|
def lista_riesgos(request):
|
|
riesgos = Riesgo.objects.all()
|
|
return render(request, 'gestion/lista_riesgos.html', {'riesgos': riesgos})
|
|
|
|
|
|
@login_required
|
|
def detalle_riesgo(request, riesgo_id):
|
|
riesgo = get_object_or_404(Riesgo, pk=riesgo_id)
|
|
return render(request, 'gestion/detalle_riesgo.html', {'riesgo': riesgo})
|
|
|
|
|
|
@login_required
|
|
def nuevo_riesgo(request):
|
|
|
|
proyectos = Proyecto.objects.all() # vamos a ver si hay vehículos dados de alta
|
|
|
|
if proyectos:
|
|
if request.method == 'POST':
|
|
form = RiesgoForm(request.POST, request.FILES)
|
|
if form.is_valid():
|
|
instancia = form.save(commit=False)
|
|
|
|
aplica_descuento = form.cleaned_data['aplica_descuento']
|
|
|
|
if aplica_descuento:
|
|
instancia.descuento = float(instancia.importe) * 0.03
|
|
else:
|
|
instancia.descuento = 0.0
|
|
|
|
instancia.importe = float(instancia.importe) - instancia.descuento
|
|
|
|
if instancia.litros > 0:
|
|
instancia.precioxlitro = round(instancia.importe / float(instancia.litros), 2)
|
|
else:
|
|
instancia.precioxlitro = 0
|
|
|
|
# lee todos los riesgos del vehículo
|
|
# riesgos = Riesgos.query.filter_by(proyecto_id=proyecto_id).all()
|
|
|
|
if Riesgo.objects.filter(proyecto_id=instancia.proyecto):
|
|
riesgos = Riesgo.objects.filter(proyecto_id=instancia.proyecto).order_by('-fecha')[0]
|
|
|
|
instancia.kmsrecorridos = instancia.kms - riesgos.kms
|
|
|
|
if instancia.kmsrecorridos > 0:
|
|
instancia.consumo = round(instancia.litros * 100 / instancia.kmsrecorridos, 2)
|
|
else:
|
|
instancia.kmsrecorridos = 0
|
|
instancia.consumo = 0
|
|
|
|
instancia.save()
|
|
|
|
return redirect('gestion:lista_riesgos')
|
|
else:
|
|
form = RiesgoForm()
|
|
return render(request, 'gestion/form_riesgo.html', {'form': form})
|
|
else:
|
|
return render(request, 'gestion/index.html')
|
|
|
|
|
|
@login_required
|
|
def editar_riesgo(request, riesgo_id):
|
|
riesgo = get_object_or_404(Riesgo, pk=riesgo_id)
|
|
|
|
if request.method == 'POST':
|
|
form = RiesgoForm(request.POST, request.FILES, instance=riesgo)
|
|
if form.is_valid():
|
|
form.save()
|
|
return redirect('gestion:lista_riesgos')
|
|
else:
|
|
form = RiesgoForm(instance=riesgo)
|
|
return render(request, 'gestion/form_riesgo.html', {'form': form})
|
|
|
|
|
|
@login_required
|
|
def eliminar_riesgo(request, riesgo_id):
|
|
riesgo = Riesgo.objects.get(pk=riesgo_id)
|
|
riesgo.delete()
|
|
return redirect('gestion:lista_riesgos')
|