From 063c7bd1f5c0de9cd71e1f5d881ce8fabc97f1f8 Mon Sep 17 00:00:00 2001 From: Tanner Collin Date: Fri, 21 Feb 2020 23:25:05 +0000 Subject: [PATCH] Return a list of transactions by month --- apiserver/apiserver/api/views.py | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/apiserver/apiserver/api/views.py b/apiserver/apiserver/api/views.py index 54c0f4f..1fc44f7 100644 --- a/apiserver/apiserver/api/views.py +++ b/apiserver/apiserver/api/views.py @@ -243,10 +243,21 @@ class TransactionViewSet(Base, List, Create, Retrieve, Update): def get_queryset(self): queryset = models.Transaction.objects - if self.action == 'list': + month = self.request.query_params.get('month', '') + + if self.action == 'list' and month: + try: + dt = datetime.datetime.strptime(month, '%Y-%m') + except ValueError: + raise exceptions.ValidationError(dict(month='Should be YYYY-MM.')) + queryset = queryset.filter(date__year=dt.year) + queryset = queryset.filter(date__month=dt.month) + queryset = queryset.exclude(category='Memberships:Fake Months') + return queryset.order_by('date', 'id') + elif self.action == 'list': queryset = queryset.exclude(report_type__isnull=True) queryset = queryset.exclude(report_type='') - return queryset.order_by('-id', '-date') + return queryset.order_by('-date', '-id') else: return queryset.all()