From: Stephen Finucane Date: Mon, 15 May 2017 23:13:36 +0000 (+0100) Subject: REST: Filter on Project.linkname - not Project.pk X-Git-Tag: v2.0.0-rc2~8 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e27b68a1cc113310535f0fadd7a56a5a54cc2b25;p=thirdparty%2Fpatchwork.git REST: Filter on Project.linkname - not Project.pk This is what we expect based on the web UI. Signed-off-by: Stephen Finucane --- diff --git a/patchwork/api/filters.py b/patchwork/api/filters.py index 7c7d7427..12a54a81 100644 --- a/patchwork/api/filters.py +++ b/patchwork/api/filters.py @@ -20,6 +20,7 @@ from django_filters import FilterSet from django_filters import IsoDateTimeFilter from django_filters import CharFilter +from django_filters import ModelChoiceFilter from patchwork.compat import LOOKUP_FIELD from patchwork.models import Bundle @@ -27,6 +28,7 @@ from patchwork.models import Check from patchwork.models import CoverLetter from patchwork.models import Event from patchwork.models import Patch +from patchwork.models import Project from patchwork.models import Series @@ -37,21 +39,27 @@ class TimestampMixin(FilterSet): since = IsoDateTimeFilter(name='date', **{LOOKUP_FIELD: 'gte'}) -class SeriesFilter(TimestampMixin, FilterSet): +class ProjectMixin(FilterSet): + + project = ModelChoiceFilter(to_field_name='linkname', + queryset=Project.objects.all()) + + +class SeriesFilter(ProjectMixin, TimestampMixin, FilterSet): class Meta: model = Series fields = ('submitter', 'project') -class CoverLetterFilter(TimestampMixin, FilterSet): +class CoverLetterFilter(ProjectMixin, TimestampMixin, FilterSet): class Meta: model = CoverLetter fields = ('project', 'series', 'submitter') -class PatchFilter(FilterSet): +class PatchFilter(ProjectMixin, FilterSet): # TODO(stephenfin): We should probably be using a ChoiceFilter here? state = CharFilter(name='state__name') @@ -69,14 +77,14 @@ class CheckFilter(TimestampMixin, FilterSet): fields = ('user', 'state', 'context') -class EventFilter(FilterSet): +class EventFilter(ProjectMixin, FilterSet): class Meta: model = Event fields = ('project', 'category', 'series', 'patch', 'cover') -class BundleFilter(FilterSet): +class BundleFilter(ProjectMixin, FilterSet): class Meta: model = Bundle