| 12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- from django.shortcuts import render, redirect
- from .models import Movimiento, Categoria
- from .forms import MovimientoForm, FiltroForm
- from django.contrib.auth.decorators import login_required
- from datetime import datetime
- @login_required
- def dashboard(request):
- movimientos = Movimiento.objects.filter(usuario=request.user).order_by('-fecha')
- form = FiltroForm(request.GET or None)
- if form.is_valid():
- if form.cleaned_data['fecha_inicio']:
- movimientos = movimientos.filter(fecha__gte=form.cleaned_data['fecha_inicio'])
- if form.cleaned_data['fecha_fin']:
- movimientos = movimientos.filter(fecha__lte=form.cleaned_data['fecha_fin'])
- if form.cleaned_data['categoria']:
- movimientos = movimientos.filter(categoria=form.cleaned_data['categoria'])
- ingresos = sum(m.monto for m in movimientos if m.categoria.tipo == 'ingreso')
- gastos = sum(m.monto for m in movimientos if m.categoria.tipo == 'gasto')
- balance = ingresos - gastos
- return render(request, 'dashboard.html', {
- 'movimientos': movimientos,
- 'ingresos': ingresos,
- 'gastos': gastos,
- 'balance': balance,
- 'form': form,
- })
- @login_required
- def agregar_movimiento(request):
- if request.method == 'POST':
- form = MovimientoForm(request.POST)
- if form.is_valid():
- movimiento = form.save(commit=False)
- movimiento.usuario = request.user
- movimiento.save()
- return redirect('dashboard')
- else:
- form = MovimientoForm()
- return render(request, 'agregar_movimiento.html', {'form': form})
|