def debts(request): """Renders expenses list page""" assert isinstance(request, HttpRequest) if request.method == 'POST': form = DatePickerForm(request.POST) if form.is_valid(): date_from = form.cleaned_data['date_from'] date_to = form.cleaned_data['date_to'] else: date_from = get_first_day(datetime.today()) date_to = get_last_day(datetime.today()) form = DatePickerForm() else: date_from = get_first_day(datetime.today()) date_to = get_last_day(datetime.today()) form = DatePickerForm() user = Person.objects.get(auth_user_id=request.user) returns = SubExpense.objects.annotate( date=Max('expense__date'), num_debtors=Count('debtors'), payer=Max('expense__payer__name')).exclude(expense__payer_id = user.id).filter( debtors__id=user.id, date__gte = date_from, date__lte = date_to).order_by('expense__payer__name') ret_dict = dict() for ret in returns: ret_dict[ret] = ret.amount / ret.num_debtors return render( request, 'app/debts.html', { 'datepickers': form, 'returns': ret_dict })
def expenses(request): """Renders expenses list page""" assert isinstance(request, HttpRequest) if request.method == 'POST': form = DatePickerForm(request.POST) if form.is_valid(): date_from = form.cleaned_data['date_from'] date_to = form.cleaned_data['date_to'] else: date_from = get_first_day(datetime.today()) date_to = get_last_day(datetime.today()) form = DatePickerForm() else: date_from = get_first_day(datetime.today()) date_to = get_last_day(datetime.today()) form = DatePickerForm() user = Person.objects.get(auth_user_id=request.user) expenses = Expense.objects.filter( payer_id=user.id, date__gte = date_from, date__lte = date_to).order_by('-date') resp = OrderedDict() for expense in expenses: db_subs = SubExpense.objects.filter(expense_id=expense.id) subs = dict() for sub in db_subs: subs[sub] = list() for deb in sub.debtors.all(): subs[sub].append(deb) resp[expense] = subs return render( request, 'app/expenses.html', { 'datepickers': form, 'expenses': resp })