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.
 
 
 
 
 

147 lines
4.7 KiB

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