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 Cuenta, Apunte from .forms import CuentaForm, ApunteForm @login_required def principal(request): cuentas = Cuenta.objects.all() apuntes = Apunte.objects.all() return render(request, 'apuntes/index.html', {'cuentas': cuentas, 'apuntes': apuntes}) # Vistas para los cuentas @login_required def lista_cuentas(request): cuentas = Cuenta.objects.all() return render(request, 'apuntes/lista_cuentas.html', {'cuentas': cuentas}) @login_required def detalle_cuenta(request, cuenta_id): cuenta = get_object_or_404(Cuenta, pk=cuenta_id) apuntes = Apunte.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 = CuentaForm(request.POST, request.FILES) if form.is_valid(): form.save() return redirect('lista_cuentas') else: form = CuentaForm() return render(request, 'apuntes/form_cuenta.html', {'form': form}) @login_required def editar_cuenta(request, cuenta_id): cuenta = get_object_or_404(Cuenta, pk=cuenta_id) if request.method == 'POST': form = CuentaForm(request.POST, request.FILES, instance=cuenta) if form.is_valid(): form.save() return redirect('lista_cuentas') else: form = CuentaForm(instance=cuenta) return render(request, 'apuntes/form_cuenta.html', {'form': form}) @login_required def eliminar_cuenta(request, cuenta_id): cuenta = get_object_or_404(Cuenta, pk=cuenta_id) cuenta.delete() return redirect('lista_cuentas') # Vistas para los apuntes @login_required def lista_apuntes(request): apuntes = Apunte.objects.all() return render(request, 'apuntes/lista_apuntes.html', {'apuntes': apuntes}) @login_required def detalle_apunte(request, apunte_id): apunte = get_object_or_404(Apunte, pk=apunte_id) return render(request, 'apuntes/detalle_apunte.html', {'apunte': apunte}) @login_required def nuevo_apunte(request): cuentas = Cuenta.objects.all() # vamos a ver si hay vehĂ­culos dados de alta if cuentas: if request.method == 'POST': form = ApunteForm(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 = Apunte.query.filter_by(cuenta_id=cuenta_id).all() if Apunte.objects.filter(cuenta_id=instancia.cuenta): apuntes = Apunte.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 = ApunteForm() 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(Apunte, pk=apunte_id) if request.method == 'POST': form = ApunteForm(request.POST, request.FILES, instance=apunte) if form.is_valid(): form.save() return redirect('lista_apuntes') else: form = ApunteForm(instance=apunte) return render(request, 'apuntes/form_apunte.html', {'form': form}) @login_required def eliminar_apunte(request, apunte_id): apunte = Apunte.objects.get(pk=apunte_id) apunte.delete() return redirect('lista_apuntes')