diff --git a/server/server/api/views.py b/server/server/api/views.py index ceecc83..9b1039d 100644 --- a/server/server/api/views.py +++ b/server/server/api/views.py @@ -2,6 +2,8 @@ from django.contrib.auth.models import User, Group from rest_framework import viewsets, permissions from server.api import serializers, models +from datetime import datetime + class UserViewSet(viewsets.ModelViewSet): queryset = User.objects.all() @@ -36,4 +38,20 @@ class TransactionViewSet(viewsets.ModelViewSet): permission_classes = [permissions.IsAuthenticated] def get_queryset(self): - return self.queryset.filter(stack__account__users=self.request.user) + queryset = self.queryset.filter(stack__account__users=self.request.user) + + if self.action == 'list': + month = self.request.query_params.get('month', '') + stack = self.request.query_params.get('stack', '') + + if month: + try: + dt = datetime.strptime(month, '%Y-%m') + except ValueError: + raise exceptions.ValidationError(dict(month='Should be YYYY-MM.')) + queryset = queryset.filter(created_at__year=dt.year) + queryset = queryset.filter(created_at__month=dt.month) + if stack: + queryset = queryset.filter(stack=stack) + + return queryset.order_by('-created_at', '-id')