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(cta_origen=cuenta_id) | Apunte.objects.filter(cta_destino=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(): instancia = form.save(commit=False) instancia.saldo_actual = instancia.saldo_inicial instancia.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 cuentas dadas de alta if cuentas: if request.method == 'POST': form = ApunteForm(request.POST, request.FILES) if form.is_valid(): instancia = form.save(commit=False) instancia.cta_origen.saldo_actual = instancia.cta_origen.saldo_actual - instancia.importe instancia.cta_origen.save() instancia.cta_destino.saldo_actual = instancia.cta_destino.saldo_actual + instancia.importe instancia.cta_destino.save() 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')