def transaction_list(request): ctx = {} user_id = request.user.id user = User.objects.get(id=user_id) fltr = request.session.get('filter:transaction_list', None) if fltr == "last_month": user_transactions = services.get_last_months_transactions(user) ctx['fltr'] = fltr elif fltr == "this_year": user_transactions = services.get_this_years_transactions(user) ctx['fltr'] = fltr elif fltr == "all_time": user_transactions = Transaction.objects.filter(user=user, active=True) ctx['fltr'] = fltr else: # make 'this_month' filter default user_transactions = services.get_months_transactions(user) ctx['fltr'] = 'this_month' user_transactions = user_transactions.order_by('-created') ctx['user'] = user ctx['transactions'] = user_transactions ctx['negative_transaction_sum'] = user_transactions \ .filter(category=Transaction.EXPENSE) \ .aggregate(Sum('amount')).get('amount__sum') ctx['positive_transaction_sum'] = user_transactions \ .filter(category=Transaction.INCOME) \ .aggregate(Sum('amount')).get('amount__sum') ctx['list'] = 'transactions' return render(request, 'transaction_list.html', context=ctx)
def test_this_years_transactions(self): with mock.patch('books.services.timezone') as mock_now: mock_now.now.return_value = datetime(2015, 4, 23, tzinfo=pytz.utc) transactions = services.get_this_years_transactions(self.user) # make test deterministic transactions = transactions.order_by("-created") self.assertEqual(len(transactions), 3) self.assertEqual(transactions[0].title, 'this_month') self.assertEqual(transactions[1].title, 'last_month') self.assertEqual(transactions[2].title, 'this_year')