from django.shortcuts import render
|
|
from django.contrib.auth.decorators import login_required
|
|
from django.shortcuts import render, get_object_or_404, redirect
|
|
|
|
# Create your views here.
|
|
from .models import Cuentas, Apuntes
|
|
from .forms import CuentasForm, ApuntesForm
|
|
|
|
@login_required
|
|
def principal(request):
|
|
cuentas = Cuentas.objects.all()
|
|
apuntes = Apuntes.objects.all()
|
|
|
|
return render(request, 'apuntes/index.html', {'cuentas': cuentas, 'apuntes': apuntes})
|
|
|
|
|
|
# Vistas para los cuentas
|
|
@login_required
|
|
def lista_cuentas(request):
|
|
cuentas = Cuentas.objects.all()
|
|
return render(request, 'apuntes/lista_cuentas.html', {'cuentas': cuentas})
|
|
|
|
|
|
@login_required
|
|
def detalle_cuenta(request, cuenta_id):
|
|
cuenta = get_object_or_404(Cuentas, pk=cuenta_id)
|
|
|
|
apuntes = Apuntes.objects.filter(cuenta=cuenta_id)
|
|
|
|
return render(request, 'apuntes/detalle_cuenta.html', {'cuenta': cuenta, 'apuntes': apuntes})
|
|
|
|
|
|
@login_required
|
|
def nueva_cuenta(request):
|
|
if request.method == 'POST':
|
|
form = CuentasForm(request.POST, request.FILES)
|
|
if form.is_valid():
|
|
form.save()
|
|
return redirect('lista_cuentas')
|
|
else:
|
|
form = CuentasForm()
|
|
return render(request, 'apuntes/form_cuenta.html', {'form': form})
|
|
|
|
|
|
@login_required
|
|
def editar_cuenta(request, cuenta_id):
|
|
cuenta = get_object_or_404(Cuentas, pk=cuenta_id)
|
|
if request.method == 'POST':
|
|
form = CuentasForm(request.POST, request.FILES, instance=cuenta)
|
|
if form.is_valid():
|
|
form.save()
|
|
return redirect('lista_cuentas')
|
|
else:
|
|
form = CuentasForm(instance=cuenta)
|
|
return render(request, 'apuntes/form_cuenta.html', {'form': form})
|
|
|
|
|
|
@login_required
|
|
def eliminar_cuenta(request, cuenta_id):
|
|
cuenta = get_object_or_404(Cuentas, pk=cuenta_id)
|
|
cuenta.delete()
|
|
return redirect('lista_cuentas')
|
|
|
|
|
|
# Vistas para los apuntes
|
|
@login_required
|
|
def lista_apuntes(request):
|
|
apuntes = Apuntes.objects.all()
|
|
return render(request, 'apuntes/lista_apuntes.html', {'apuntes': apuntes})
|
|
|
|
|
|
@login_required
|
|
def detalle_apunte(request, apunte_id):
|
|
apunte = get_object_or_404(Apuntes, pk=apunte_id)
|
|
return render(request, 'apuntes/detalle_apunte.html', {'apunte': apunte})
|
|
|
|
|
|
@login_required
|
|
def nuevo_apunte(request):
|
|
|
|
cuentas = Cuentas.objects.all() # vamos a ver si hay vehículos dados de alta
|
|
|
|
if cuentas:
|
|
if request.method == 'POST':
|
|
form = ApuntesForm(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 apuntes del vehículo
|
|
# apuntes = Apuntes.query.filter_by(cuenta_id=cuenta_id).all()
|
|
|
|
if Apuntes.objects.filter(cuenta_id=instancia.cuenta):
|
|
apuntes = Apuntes.objects.filter(cuenta_id=instancia.cuenta).order_by('-fecha')[0]
|
|
|
|
instancia.kmsrecorridos = instancia.kms - apuntes.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('lista_apuntes')
|
|
else:
|
|
form = ApuntesForm()
|
|
return render(request, 'apuntes/form_apunte.html', {'form': form})
|
|
else:
|
|
return render(request, 'apuntes/index.html')
|
|
|
|
|
|
@login_required
|
|
def editar_apunte(request, apunte_id):
|
|
apunte = get_object_or_404(Apuntes, pk=apunte_id)
|
|
|
|
if request.method == 'POST':
|
|
form = ApuntesForm(request.POST, request.FILES, instance=apunte)
|
|
if form.is_valid():
|
|
form.save()
|
|
return redirect('lista_apuntes')
|
|
else:
|
|
form = ApuntesForm(instance=apunte)
|
|
return render(request, 'apuntes/form_apunte.html', {'form': form})
|
|
|
|
|
|
@login_required
|
|
def eliminar_apunte(request, apunte_id):
|
|
apunte = Apuntes.objects.get(pk=apunte_id)
|
|
apunte.delete()
|
|
return redirect('lista_apuntes')
|