from rest_framework.serializers import HyperlinkedIdentityField
from patchwork.api.base import MultipleFieldLookupMixin
+from patchwork.api.filters import CheckFilter
from patchwork.models import Check
from patchwork.models import Patch
queryset = Check.objects.prefetch_related('patch', 'user')
serializer_class = CheckSerializer
+ filter_class = CheckFilter
class CheckListCreate(CheckMixin, ListCreateAPIView):
from rest_framework.serializers import HyperlinkedRelatedField
from rest_framework.serializers import SerializerMethodField
+from patchwork.api.filters import CoverLetterFilter
from patchwork.models import CoverLetter
"""List cover letters."""
serializer_class = CoverLetterListSerializer
+ filter_class = CoverLetterFilter
def get_queryset(self):
qs = CoverLetter.objects.all().prefetch_related('series')\
--- /dev/null
+# Patchwork - automated patch tracking system
+# Copyright (C) 2017 Stephen Finucane <stephen@that.guru>
+#
+# This file is part of the Patchwork package.
+#
+# Patchwork is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# Patchwork is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with Patchwork; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+from django_filters import FilterSet
+from django_filters import IsoDateTimeFilter
+
+from patchwork.models import Check
+from patchwork.models import CoverLetter
+from patchwork.models import Patch
+from patchwork.models import Series
+
+
+class TimestampMixin(object):
+
+ # TODO(stephenfin): These should filter on a 'updated_at' field instead
+ before = IsoDateTimeFilter(name='date', lookup_expr='lt')
+ since = IsoDateTimeFilter(name='date', lookup_expr='gte')
+
+
+class SeriesFilter(TimestampMixin, FilterSet):
+
+ class Meta:
+ model = Series
+ fields = ('submitter',)
+
+
+class CoverLetterFilter(TimestampMixin, FilterSet):
+
+ class Meta:
+ model = CoverLetter
+ fields = ('project', 'series', 'submitter')
+
+
+class PatchFilter(FilterSet):
+
+ class Meta:
+ model = Patch
+ fields = ('project', 'series', 'submitter', 'delegate', 'state',
+ 'archived')
+
+
+class CheckFilter(TimestampMixin, FilterSet):
+
+ class Meta:
+ model = Check
+ fields = ('user', 'state', 'context')
from patchwork.api.base import PatchworkPermission
from patchwork.api.base import STATE_CHOICES
+from patchwork.api.filters import PatchFilter
from patchwork.models import Patch
from patchwork.models import State
permission_classes = (PatchworkPermission,)
serializer_class = PatchListSerializer
+ filter_class = PatchFilter
def get_queryset(self):
return Patch.objects.all().with_tag_counts()\
from rest_framework.serializers import HyperlinkedModelSerializer
from patchwork.api.base import PatchworkPermission
+from patchwork.api.filters import SeriesFilter
from patchwork.models import Series
class SeriesList(SeriesMixin, ListAPIView):
"""List series."""
- pass
+ filter_class = SeriesFilter
class SeriesDetail(SeriesMixin, RetrieveAPIView):