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.
 
 
 
 
 

127 lines
3.8 KiB

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