[5/7] REST: Rename Filter -> FilterSet

Message ID 20180411161338.420-6-stephen@that.guru
State Accepted
Headers show
Series
  • Add support for multiple filters
Related show

Commit Message

Stephen Finucane April 11, 2018, 4:13 p.m.
This was confusing and will conflict with some forthcoming changes.

Signed-off-by: Stephen Finucane <stephen@that.guru>
---
 patchwork/api/bundle.py  |  4 ++--
 patchwork/api/check.py   |  4 ++--
 patchwork/api/cover.py   |  4 ++--
 patchwork/api/event.py   |  4 ++--
 patchwork/api/filters.py | 12 ++++++------
 patchwork/api/patch.py   |  4 ++--
 patchwork/api/series.py  |  4 ++--
 7 files changed, 18 insertions(+), 18 deletions(-)

Comments

Daniel Axtens May 8, 2018, 3:52 p.m. | #1
Stephen Finucane <stephen@that.guru> writes:

> This was confusing and will conflict with some forthcoming changes.

I think you're saying that what are called <Model>Filters are actually
conceptually <Model>FilterSets, but I still don't actually know the
difference between the two so perhaps a sentence to explain the
implications of each name would be helpful. (It looks like a filterset
is a set of filters in a particular type of class?)

More generally, we're not all experts on all of Patchwork, and in
particular I'm very much not a d-r-f expert - commit messages written
with that in mind would really help me review API patches.

Anyway, the rewrite all seems sensible enough to me.

Regards,
Daniel

>
> Signed-off-by: Stephen Finucane <stephen@that.guru>
> ---
>  patchwork/api/bundle.py  |  4 ++--
>  patchwork/api/check.py   |  4 ++--
>  patchwork/api/cover.py   |  4 ++--
>  patchwork/api/event.py   |  4 ++--
>  patchwork/api/filters.py | 12 ++++++------
>  patchwork/api/patch.py   |  4 ++--
>  patchwork/api/series.py  |  4 ++--
>  7 files changed, 18 insertions(+), 18 deletions(-)
>
> diff --git a/patchwork/api/bundle.py b/patchwork/api/bundle.py
> index 0278592a..733e4881 100644
> --- a/patchwork/api/bundle.py
> +++ b/patchwork/api/bundle.py
> @@ -24,7 +24,7 @@ from rest_framework.serializers import HyperlinkedModelSerializer
>  from rest_framework.serializers import SerializerMethodField
>  
>  from patchwork.api.base import PatchworkPermission
> -from patchwork.api.filters import BundleFilter
> +from patchwork.api.filters import BundleFilterSet
>  from patchwork.api.embedded import PatchSerializer
>  from patchwork.api.embedded import ProjectSerializer
>  from patchwork.api.embedded import UserSerializer
> @@ -73,7 +73,7 @@ class BundleMixin(object):
>  class BundleList(BundleMixin, ListAPIView):
>      """List bundles."""
>  
> -    filter_class = BundleFilter
> +    filter_class = BundleFilterSet
>      search_fields = ('name',)
>      ordering_fields = ('id', 'name', 'owner')
>      ordering = 'id'
> diff --git a/patchwork/api/check.py b/patchwork/api/check.py
> index b37d6e01..8753c7de 100644
> --- a/patchwork/api/check.py
> +++ b/patchwork/api/check.py
> @@ -27,7 +27,7 @@ from rest_framework.serializers import HyperlinkedModelSerializer
>  from patchwork.api.base import CheckHyperlinkedIdentityField
>  from patchwork.api.base import MultipleFieldLookupMixin
>  from patchwork.api.embedded import UserSerializer
> -from patchwork.api.filters import CheckFilter
> +from patchwork.api.filters import CheckFilterSet
>  from patchwork.models import Check
>  from patchwork.models import Patch
>  
> @@ -80,7 +80,7 @@ class CheckSerializer(HyperlinkedModelSerializer):
>  class CheckMixin(object):
>  
>      serializer_class = CheckSerializer
> -    filter_class = CheckFilter
> +    filter_class = CheckFilterSet
>  
>      def get_queryset(self):
>          return Check.objects.prefetch_related('patch', 'user')
> diff --git a/patchwork/api/cover.py b/patchwork/api/cover.py
> index fc7ae97b..9c9dc738 100644
> --- a/patchwork/api/cover.py
> +++ b/patchwork/api/cover.py
> @@ -24,7 +24,7 @@ from rest_framework.generics import RetrieveAPIView
>  from rest_framework.serializers import SerializerMethodField
>  
>  from patchwork.api.base import BaseHyperlinkedModelSerializer
> -from patchwork.api.filters import CoverLetterFilter
> +from patchwork.api.filters import CoverLetterFilterSet
>  from patchwork.api.embedded import PersonSerializer
>  from patchwork.api.embedded import ProjectSerializer
>  from patchwork.api.embedded import SeriesSerializer
> @@ -74,7 +74,7 @@ class CoverLetterList(ListAPIView):
>      """List cover letters."""
>  
>      serializer_class = CoverLetterListSerializer
> -    filter_class = CoverLetterFilter
> +    filter_class = CoverLetterFilterSet
>      search_fields = ('name',)
>      ordering_fields = ('id', 'name', 'date', 'submitter')
>      ordering = 'id'
> diff --git a/patchwork/api/event.py b/patchwork/api/event.py
> index 9879a9f6..b6626ec7 100644
> --- a/patchwork/api/event.py
> +++ b/patchwork/api/event.py
> @@ -32,7 +32,7 @@ from patchwork.api.embedded import PatchSerializer
>  from patchwork.api.embedded import ProjectSerializer
>  from patchwork.api.embedded import SeriesSerializer
>  from patchwork.api.embedded import UserSerializer
> -from patchwork.api.filters import EventFilter
> +from patchwork.api.filters import EventFilterSet
>  from patchwork.api.patch import StateField
>  from patchwork.models import Event
>  
> @@ -104,7 +104,7 @@ class EventList(ListAPIView):
>      renderer_classes = (JSONRenderer, JSONListHTMLRenderer)
>      template_name = 'patchwork/event-list.html'
>      serializer_class = EventSerializer
> -    filter_class = EventFilter
> +    filter_class = EventFilterSet
>      page_size_query_param = None  # fixed page size
>      ordering_fields = ()
>      ordering = '-date'
> diff --git a/patchwork/api/filters.py b/patchwork/api/filters.py
> index 7d94d5ed..afef10f4 100644
> --- a/patchwork/api/filters.py
> +++ b/patchwork/api/filters.py
> @@ -141,7 +141,7 @@ class TimestampMixin(FilterSet):
>      since = IsoDateTimeFilter(name='date', lookup_expr='gte')
>  
>  
> -class SeriesFilter(TimestampMixin, FilterSet):
> +class SeriesFilterSet(TimestampMixin, FilterSet):
>  
>      submitter = PersonFilter(queryset=Person.objects.all())
>      project = ProjectFilter(queryset=Project.objects.all())
> @@ -151,7 +151,7 @@ class SeriesFilter(TimestampMixin, FilterSet):
>          fields = ('submitter', 'project')
>  
>  
> -class CoverLetterFilter(TimestampMixin, FilterSet):
> +class CoverLetterFilterSet(TimestampMixin, FilterSet):
>  
>      project = ProjectFilter(queryset=Project.objects.all())
>      submitter = PersonFilter(queryset=Person.objects.all())
> @@ -161,7 +161,7 @@ class CoverLetterFilter(TimestampMixin, FilterSet):
>          fields = ('project', 'series', 'submitter')
>  
>  
> -class PatchFilter(TimestampMixin, FilterSet):
> +class PatchFilterSet(TimestampMixin, FilterSet):
>  
>      project = ProjectFilter(queryset=Project.objects.all())
>      submitter = PersonFilter(queryset=Person.objects.all())
> @@ -174,7 +174,7 @@ class PatchFilter(TimestampMixin, FilterSet):
>                    'state', 'archived')
>  
>  
> -class CheckFilter(TimestampMixin, FilterSet):
> +class CheckFilterSet(TimestampMixin, FilterSet):
>  
>      user = UserFilter(queryset=User.objects.all())
>  
> @@ -183,7 +183,7 @@ class CheckFilter(TimestampMixin, FilterSet):
>          fields = ('user', 'state', 'context')
>  
>  
> -class EventFilter(TimestampMixin, FilterSet):
> +class EventFilterSet(TimestampMixin, FilterSet):
>  
>      project = ProjectFilter(queryset=Project.objects.all())
>  
> @@ -192,7 +192,7 @@ class EventFilter(TimestampMixin, FilterSet):
>          fields = ('project', 'category', 'series', 'patch', 'cover')
>  
>  
> -class BundleFilter(FilterSet):
> +class BundleFilterSet(FilterSet):
>  
>      project = ProjectFilter(queryset=Project.objects.all())
>      owner = UserFilter(queryset=User.objects.all())
> diff --git a/patchwork/api/patch.py b/patchwork/api/patch.py
> index 115feffa..eee3818e 100644
> --- a/patchwork/api/patch.py
> +++ b/patchwork/api/patch.py
> @@ -28,7 +28,7 @@ from rest_framework.serializers import HyperlinkedModelSerializer
>  from rest_framework.serializers import SerializerMethodField
>  
>  from patchwork.api.base import PatchworkPermission
> -from patchwork.api.filters import PatchFilter
> +from patchwork.api.filters import PatchFilterSet
>  from patchwork.api.embedded import PersonSerializer
>  from patchwork.api.embedded import ProjectSerializer
>  from patchwork.api.embedded import SeriesSerializer
> @@ -143,7 +143,7 @@ class PatchList(ListAPIView):
>  
>      permission_classes = (PatchworkPermission,)
>      serializer_class = PatchListSerializer
> -    filter_class = PatchFilter
> +    filter_class = PatchFilterSet
>      search_fields = ('name',)
>      ordering_fields = ('id', 'name', 'project', 'date', 'state', 'archived',
>                         'submitter', 'check')
> diff --git a/patchwork/api/series.py b/patchwork/api/series.py
> index b5f4450a..ab1b6adb 100644
> --- a/patchwork/api/series.py
> +++ b/patchwork/api/series.py
> @@ -23,7 +23,7 @@ from rest_framework.serializers import HyperlinkedModelSerializer
>  from rest_framework.serializers import SerializerMethodField
>  
>  from patchwork.api.base import PatchworkPermission
> -from patchwork.api.filters import SeriesFilter
> +from patchwork.api.filters import SeriesFilterSet
>  from patchwork.api.embedded import CoverLetterSerializer
>  from patchwork.api.embedded import PatchSerializer
>  from patchwork.api.embedded import PersonSerializer
> @@ -68,7 +68,7 @@ class SeriesMixin(object):
>  class SeriesList(SeriesMixin, ListAPIView):
>      """List series."""
>  
> -    filter_class = SeriesFilter
> +    filter_class = SeriesFilterSet
>      search_fields = ('name',)
>      ordering_fields = ('id', 'name', 'date', 'submitter', 'received_all')
>      ordering = 'id'
> -- 
> 2.14.3
>
> _______________________________________________
> Patchwork mailing list
> Patchwork@lists.ozlabs.org
> https://lists.ozlabs.org/listinfo/patchwork
Stephen Finucane May 8, 2018, 4:17 p.m. | #2
On Wed, 2018-05-09 at 01:52 +1000, Daniel Axtens wrote:
> Stephen Finucane <stephen@that.guru> writes:
> 
> > This was confusing and will conflict with some forthcoming changes.
> 
> I think you're saying that what are called <Model>Filters are actually
> conceptually <Model>FilterSets, but I still don't actually know the
> difference between the two so perhaps a sentence to explain the
> implications of each name would be helpful. (It looks like a filterset
> is a set of filters in a particular type of class?)

Yeah, FilterSets are to Forms as Filters are to Fields: the former is
made up of the latter. We have a FilterSet for each resource that we
wish to support filtering on (i.e. all of them).

> More generally, we're not all experts on all of Patchwork, and in
> particular I'm very much not a d-r-f expert - commit messages written
> with that in mind would really help me review API patches.

Yeah, sorry about that. As noted previously, these were done after the
fact and do assume a lot. I'll pay attention to that in the future.

Stephen

> Anyway, the rewrite all seems sensible enough to me.
> 
> Regards,
> Daniel
> 
> > 
> > Signed-off-by: Stephen Finucane <stephen@that.guru>
> > ---
> >  patchwork/api/bundle.py  |  4 ++--
> >  patchwork/api/check.py   |  4 ++--
> >  patchwork/api/cover.py   |  4 ++--
> >  patchwork/api/event.py   |  4 ++--
> >  patchwork/api/filters.py | 12 ++++++------
> >  patchwork/api/patch.py   |  4 ++--
> >  patchwork/api/series.py  |  4 ++--
> >  7 files changed, 18 insertions(+), 18 deletions(-)
> > 
> > diff --git a/patchwork/api/bundle.py b/patchwork/api/bundle.py
> > index 0278592a..733e4881 100644
> > --- a/patchwork/api/bundle.py
> > +++ b/patchwork/api/bundle.py
> > @@ -24,7 +24,7 @@ from rest_framework.serializers import HyperlinkedModelSerializer
> >  from rest_framework.serializers import SerializerMethodField
> >  
> >  from patchwork.api.base import PatchworkPermission
> > -from patchwork.api.filters import BundleFilter
> > +from patchwork.api.filters import BundleFilterSet
> >  from patchwork.api.embedded import PatchSerializer
> >  from patchwork.api.embedded import ProjectSerializer
> >  from patchwork.api.embedded import UserSerializer
> > @@ -73,7 +73,7 @@ class BundleMixin(object):
> >  class BundleList(BundleMixin, ListAPIView):
> >      """List bundles."""
> >  
> > -    filter_class = BundleFilter
> > +    filter_class = BundleFilterSet
> >      search_fields = ('name',)
> >      ordering_fields = ('id', 'name', 'owner')
> >      ordering = 'id'
> > diff --git a/patchwork/api/check.py b/patchwork/api/check.py
> > index b37d6e01..8753c7de 100644
> > --- a/patchwork/api/check.py
> > +++ b/patchwork/api/check.py
> > @@ -27,7 +27,7 @@ from rest_framework.serializers import HyperlinkedModelSerializer
> >  from patchwork.api.base import CheckHyperlinkedIdentityField
> >  from patchwork.api.base import MultipleFieldLookupMixin
> >  from patchwork.api.embedded import UserSerializer
> > -from patchwork.api.filters import CheckFilter
> > +from patchwork.api.filters import CheckFilterSet
> >  from patchwork.models import Check
> >  from patchwork.models import Patch
> >  
> > @@ -80,7 +80,7 @@ class CheckSerializer(HyperlinkedModelSerializer):
> >  class CheckMixin(object):
> >  
> >      serializer_class = CheckSerializer
> > -    filter_class = CheckFilter
> > +    filter_class = CheckFilterSet
> >  
> >      def get_queryset(self):
> >          return Check.objects.prefetch_related('patch', 'user')
> > diff --git a/patchwork/api/cover.py b/patchwork/api/cover.py
> > index fc7ae97b..9c9dc738 100644
> > --- a/patchwork/api/cover.py
> > +++ b/patchwork/api/cover.py
> > @@ -24,7 +24,7 @@ from rest_framework.generics import RetrieveAPIView
> >  from rest_framework.serializers import SerializerMethodField
> >  
> >  from patchwork.api.base import BaseHyperlinkedModelSerializer
> > -from patchwork.api.filters import CoverLetterFilter
> > +from patchwork.api.filters import CoverLetterFilterSet
> >  from patchwork.api.embedded import PersonSerializer
> >  from patchwork.api.embedded import ProjectSerializer
> >  from patchwork.api.embedded import SeriesSerializer
> > @@ -74,7 +74,7 @@ class CoverLetterList(ListAPIView):
> >      """List cover letters."""
> >  
> >      serializer_class = CoverLetterListSerializer
> > -    filter_class = CoverLetterFilter
> > +    filter_class = CoverLetterFilterSet
> >      search_fields = ('name',)
> >      ordering_fields = ('id', 'name', 'date', 'submitter')
> >      ordering = 'id'
> > diff --git a/patchwork/api/event.py b/patchwork/api/event.py
> > index 9879a9f6..b6626ec7 100644
> > --- a/patchwork/api/event.py
> > +++ b/patchwork/api/event.py
> > @@ -32,7 +32,7 @@ from patchwork.api.embedded import PatchSerializer
> >  from patchwork.api.embedded import ProjectSerializer
> >  from patchwork.api.embedded import SeriesSerializer
> >  from patchwork.api.embedded import UserSerializer
> > -from patchwork.api.filters import EventFilter
> > +from patchwork.api.filters import EventFilterSet
> >  from patchwork.api.patch import StateField
> >  from patchwork.models import Event
> >  
> > @@ -104,7 +104,7 @@ class EventList(ListAPIView):
> >      renderer_classes = (JSONRenderer, JSONListHTMLRenderer)
> >      template_name = 'patchwork/event-list.html'
> >      serializer_class = EventSerializer
> > -    filter_class = EventFilter
> > +    filter_class = EventFilterSet
> >      page_size_query_param = None  # fixed page size
> >      ordering_fields = ()
> >      ordering = '-date'
> > diff --git a/patchwork/api/filters.py b/patchwork/api/filters.py
> > index 7d94d5ed..afef10f4 100644
> > --- a/patchwork/api/filters.py
> > +++ b/patchwork/api/filters.py
> > @@ -141,7 +141,7 @@ class TimestampMixin(FilterSet):
> >      since = IsoDateTimeFilter(name='date', lookup_expr='gte')
> >  
> >  
> > -class SeriesFilter(TimestampMixin, FilterSet):
> > +class SeriesFilterSet(TimestampMixin, FilterSet):
> >  
> >      submitter = PersonFilter(queryset=Person.objects.all())
> >      project = ProjectFilter(queryset=Project.objects.all())
> > @@ -151,7 +151,7 @@ class SeriesFilter(TimestampMixin, FilterSet):
> >          fields = ('submitter', 'project')
> >  
> >  
> > -class CoverLetterFilter(TimestampMixin, FilterSet):
> > +class CoverLetterFilterSet(TimestampMixin, FilterSet):
> >  
> >      project = ProjectFilter(queryset=Project.objects.all())
> >      submitter = PersonFilter(queryset=Person.objects.all())
> > @@ -161,7 +161,7 @@ class CoverLetterFilter(TimestampMixin, FilterSet):
> >          fields = ('project', 'series', 'submitter')
> >  
> >  
> > -class PatchFilter(TimestampMixin, FilterSet):
> > +class PatchFilterSet(TimestampMixin, FilterSet):
> >  
> >      project = ProjectFilter(queryset=Project.objects.all())
> >      submitter = PersonFilter(queryset=Person.objects.all())
> > @@ -174,7 +174,7 @@ class PatchFilter(TimestampMixin, FilterSet):
> >                    'state', 'archived')
> >  
> >  
> > -class CheckFilter(TimestampMixin, FilterSet):
> > +class CheckFilterSet(TimestampMixin, FilterSet):
> >  
> >      user = UserFilter(queryset=User.objects.all())
> >  
> > @@ -183,7 +183,7 @@ class CheckFilter(TimestampMixin, FilterSet):
> >          fields = ('user', 'state', 'context')
> >  
> >  
> > -class EventFilter(TimestampMixin, FilterSet):
> > +class EventFilterSet(TimestampMixin, FilterSet):
> >  
> >      project = ProjectFilter(queryset=Project.objects.all())
> >  
> > @@ -192,7 +192,7 @@ class EventFilter(TimestampMixin, FilterSet):
> >          fields = ('project', 'category', 'series', 'patch', 'cover')
> >  
> >  
> > -class BundleFilter(FilterSet):
> > +class BundleFilterSet(FilterSet):
> >  
> >      project = ProjectFilter(queryset=Project.objects.all())
> >      owner = UserFilter(queryset=User.objects.all())
> > diff --git a/patchwork/api/patch.py b/patchwork/api/patch.py
> > index 115feffa..eee3818e 100644
> > --- a/patchwork/api/patch.py
> > +++ b/patchwork/api/patch.py
> > @@ -28,7 +28,7 @@ from rest_framework.serializers import HyperlinkedModelSerializer
> >  from rest_framework.serializers import SerializerMethodField
> >  
> >  from patchwork.api.base import PatchworkPermission
> > -from patchwork.api.filters import PatchFilter
> > +from patchwork.api.filters import PatchFilterSet
> >  from patchwork.api.embedded import PersonSerializer
> >  from patchwork.api.embedded import ProjectSerializer
> >  from patchwork.api.embedded import SeriesSerializer
> > @@ -143,7 +143,7 @@ class PatchList(ListAPIView):
> >  
> >      permission_classes = (PatchworkPermission,)
> >      serializer_class = PatchListSerializer
> > -    filter_class = PatchFilter
> > +    filter_class = PatchFilterSet
> >      search_fields = ('name',)
> >      ordering_fields = ('id', 'name', 'project', 'date', 'state', 'archived',
> >                         'submitter', 'check')
> > diff --git a/patchwork/api/series.py b/patchwork/api/series.py
> > index b5f4450a..ab1b6adb 100644
> > --- a/patchwork/api/series.py
> > +++ b/patchwork/api/series.py
> > @@ -23,7 +23,7 @@ from rest_framework.serializers import HyperlinkedModelSerializer
> >  from rest_framework.serializers import SerializerMethodField
> >  
> >  from patchwork.api.base import PatchworkPermission
> > -from patchwork.api.filters import SeriesFilter
> > +from patchwork.api.filters import SeriesFilterSet
> >  from patchwork.api.embedded import CoverLetterSerializer
> >  from patchwork.api.embedded import PatchSerializer
> >  from patchwork.api.embedded import PersonSerializer
> > @@ -68,7 +68,7 @@ class SeriesMixin(object):
> >  class SeriesList(SeriesMixin, ListAPIView):
> >      """List series."""
> >  
> > -    filter_class = SeriesFilter
> > +    filter_class = SeriesFilterSet
> >      search_fields = ('name',)
> >      ordering_fields = ('id', 'name', 'date', 'submitter', 'received_all')
> >      ordering = 'id'
> > -- 
> > 2.14.3
> > 
> > _______________________________________________
> > Patchwork mailing list
> > Patchwork@lists.ozlabs.org
> > https://lists.ozlabs.org/listinfo/patchwork

Patch

diff --git a/patchwork/api/bundle.py b/patchwork/api/bundle.py
index 0278592a..733e4881 100644
--- a/patchwork/api/bundle.py
+++ b/patchwork/api/bundle.py
@@ -24,7 +24,7 @@  from rest_framework.serializers import HyperlinkedModelSerializer
 from rest_framework.serializers import SerializerMethodField
 
 from patchwork.api.base import PatchworkPermission
-from patchwork.api.filters import BundleFilter
+from patchwork.api.filters import BundleFilterSet
 from patchwork.api.embedded import PatchSerializer
 from patchwork.api.embedded import ProjectSerializer
 from patchwork.api.embedded import UserSerializer
@@ -73,7 +73,7 @@  class BundleMixin(object):
 class BundleList(BundleMixin, ListAPIView):
     """List bundles."""
 
-    filter_class = BundleFilter
+    filter_class = BundleFilterSet
     search_fields = ('name',)
     ordering_fields = ('id', 'name', 'owner')
     ordering = 'id'
diff --git a/patchwork/api/check.py b/patchwork/api/check.py
index b37d6e01..8753c7de 100644
--- a/patchwork/api/check.py
+++ b/patchwork/api/check.py
@@ -27,7 +27,7 @@  from rest_framework.serializers import HyperlinkedModelSerializer
 from patchwork.api.base import CheckHyperlinkedIdentityField
 from patchwork.api.base import MultipleFieldLookupMixin
 from patchwork.api.embedded import UserSerializer
-from patchwork.api.filters import CheckFilter
+from patchwork.api.filters import CheckFilterSet
 from patchwork.models import Check
 from patchwork.models import Patch
 
@@ -80,7 +80,7 @@  class CheckSerializer(HyperlinkedModelSerializer):
 class CheckMixin(object):
 
     serializer_class = CheckSerializer
-    filter_class = CheckFilter
+    filter_class = CheckFilterSet
 
     def get_queryset(self):
         return Check.objects.prefetch_related('patch', 'user')
diff --git a/patchwork/api/cover.py b/patchwork/api/cover.py
index fc7ae97b..9c9dc738 100644
--- a/patchwork/api/cover.py
+++ b/patchwork/api/cover.py
@@ -24,7 +24,7 @@  from rest_framework.generics import RetrieveAPIView
 from rest_framework.serializers import SerializerMethodField
 
 from patchwork.api.base import BaseHyperlinkedModelSerializer
-from patchwork.api.filters import CoverLetterFilter
+from patchwork.api.filters import CoverLetterFilterSet
 from patchwork.api.embedded import PersonSerializer
 from patchwork.api.embedded import ProjectSerializer
 from patchwork.api.embedded import SeriesSerializer
@@ -74,7 +74,7 @@  class CoverLetterList(ListAPIView):
     """List cover letters."""
 
     serializer_class = CoverLetterListSerializer
-    filter_class = CoverLetterFilter
+    filter_class = CoverLetterFilterSet
     search_fields = ('name',)
     ordering_fields = ('id', 'name', 'date', 'submitter')
     ordering = 'id'
diff --git a/patchwork/api/event.py b/patchwork/api/event.py
index 9879a9f6..b6626ec7 100644
--- a/patchwork/api/event.py
+++ b/patchwork/api/event.py
@@ -32,7 +32,7 @@  from patchwork.api.embedded import PatchSerializer
 from patchwork.api.embedded import ProjectSerializer
 from patchwork.api.embedded import SeriesSerializer
 from patchwork.api.embedded import UserSerializer
-from patchwork.api.filters import EventFilter
+from patchwork.api.filters import EventFilterSet
 from patchwork.api.patch import StateField
 from patchwork.models import Event
 
@@ -104,7 +104,7 @@  class EventList(ListAPIView):
     renderer_classes = (JSONRenderer, JSONListHTMLRenderer)
     template_name = 'patchwork/event-list.html'
     serializer_class = EventSerializer
-    filter_class = EventFilter
+    filter_class = EventFilterSet
     page_size_query_param = None  # fixed page size
     ordering_fields = ()
     ordering = '-date'
diff --git a/patchwork/api/filters.py b/patchwork/api/filters.py
index 7d94d5ed..afef10f4 100644
--- a/patchwork/api/filters.py
+++ b/patchwork/api/filters.py
@@ -141,7 +141,7 @@  class TimestampMixin(FilterSet):
     since = IsoDateTimeFilter(name='date', lookup_expr='gte')
 
 
-class SeriesFilter(TimestampMixin, FilterSet):
+class SeriesFilterSet(TimestampMixin, FilterSet):
 
     submitter = PersonFilter(queryset=Person.objects.all())
     project = ProjectFilter(queryset=Project.objects.all())
@@ -151,7 +151,7 @@  class SeriesFilter(TimestampMixin, FilterSet):
         fields = ('submitter', 'project')
 
 
-class CoverLetterFilter(TimestampMixin, FilterSet):
+class CoverLetterFilterSet(TimestampMixin, FilterSet):
 
     project = ProjectFilter(queryset=Project.objects.all())
     submitter = PersonFilter(queryset=Person.objects.all())
@@ -161,7 +161,7 @@  class CoverLetterFilter(TimestampMixin, FilterSet):
         fields = ('project', 'series', 'submitter')
 
 
-class PatchFilter(TimestampMixin, FilterSet):
+class PatchFilterSet(TimestampMixin, FilterSet):
 
     project = ProjectFilter(queryset=Project.objects.all())
     submitter = PersonFilter(queryset=Person.objects.all())
@@ -174,7 +174,7 @@  class PatchFilter(TimestampMixin, FilterSet):
                   'state', 'archived')
 
 
-class CheckFilter(TimestampMixin, FilterSet):
+class CheckFilterSet(TimestampMixin, FilterSet):
 
     user = UserFilter(queryset=User.objects.all())
 
@@ -183,7 +183,7 @@  class CheckFilter(TimestampMixin, FilterSet):
         fields = ('user', 'state', 'context')
 
 
-class EventFilter(TimestampMixin, FilterSet):
+class EventFilterSet(TimestampMixin, FilterSet):
 
     project = ProjectFilter(queryset=Project.objects.all())
 
@@ -192,7 +192,7 @@  class EventFilter(TimestampMixin, FilterSet):
         fields = ('project', 'category', 'series', 'patch', 'cover')
 
 
-class BundleFilter(FilterSet):
+class BundleFilterSet(FilterSet):
 
     project = ProjectFilter(queryset=Project.objects.all())
     owner = UserFilter(queryset=User.objects.all())
diff --git a/patchwork/api/patch.py b/patchwork/api/patch.py
index 115feffa..eee3818e 100644
--- a/patchwork/api/patch.py
+++ b/patchwork/api/patch.py
@@ -28,7 +28,7 @@  from rest_framework.serializers import HyperlinkedModelSerializer
 from rest_framework.serializers import SerializerMethodField
 
 from patchwork.api.base import PatchworkPermission
-from patchwork.api.filters import PatchFilter
+from patchwork.api.filters import PatchFilterSet
 from patchwork.api.embedded import PersonSerializer
 from patchwork.api.embedded import ProjectSerializer
 from patchwork.api.embedded import SeriesSerializer
@@ -143,7 +143,7 @@  class PatchList(ListAPIView):
 
     permission_classes = (PatchworkPermission,)
     serializer_class = PatchListSerializer
-    filter_class = PatchFilter
+    filter_class = PatchFilterSet
     search_fields = ('name',)
     ordering_fields = ('id', 'name', 'project', 'date', 'state', 'archived',
                        'submitter', 'check')
diff --git a/patchwork/api/series.py b/patchwork/api/series.py
index b5f4450a..ab1b6adb 100644
--- a/patchwork/api/series.py
+++ b/patchwork/api/series.py
@@ -23,7 +23,7 @@  from rest_framework.serializers import HyperlinkedModelSerializer
 from rest_framework.serializers import SerializerMethodField
 
 from patchwork.api.base import PatchworkPermission
-from patchwork.api.filters import SeriesFilter
+from patchwork.api.filters import SeriesFilterSet
 from patchwork.api.embedded import CoverLetterSerializer
 from patchwork.api.embedded import PatchSerializer
 from patchwork.api.embedded import PersonSerializer
@@ -68,7 +68,7 @@  class SeriesMixin(object):
 class SeriesList(SeriesMixin, ListAPIView):
     """List series."""
 
-    filter_class = SeriesFilter
+    filter_class = SeriesFilterSet
     search_fields = ('name',)
     ordering_fields = ('id', 'name', 'date', 'submitter', 'received_all')
     ordering = 'id'