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