37345-vm/core/views.py
Flatlogic Bot dd65b220bd 01
2026-01-10 17:02:25 +00:00

39 lines
1.1 KiB
Python

from django.shortcuts import render, redirect
from .forms import ExpenseForm
from .models import Expense, Category
from django.db.models import Sum
def home(request):
"""Render the landing screen and handle expense form submission."""
if request.method == 'POST':
form = ExpenseForm(request.POST)
if form.is_valid():
form.save()
return redirect('home')
else:
form = ExpenseForm()
expenses = Expense.objects.all()
# Filtering logic
category_id = request.GET.get('category')
if category_id:
expenses = expenses.filter(category_id=category_id)
expenses = expenses.order_by('-date')
# Analysis
total_expenses = expenses.aggregate(Sum('amount'))['amount__sum'] or 0
category_summary = expenses.values('category__name').annotate(total=Sum('amount')).order_by('-total')
categories = Category.objects.all()
return render(request, "core/index.html", {
'form': form,
'expenses': expenses,
'categories': categories,
'total_expenses': total_expenses,
'category_summary': category_summary,
})