]> git.ipfire.org Git - thirdparty/patchwork.git/commitdiff
REST: Filter on Project.linkname - not Project.pk
authorStephen Finucane <stephen@that.guru>
Mon, 15 May 2017 23:13:36 +0000 (00:13 +0100)
committerStephen Finucane <stephen@that.guru>
Thu, 18 May 2017 20:19:01 +0000 (21:19 +0100)
This is what we expect based on the web UI.

Signed-off-by: Stephen Finucane <stephen@that.guru>
patchwork/api/filters.py

index 7c7d74278f770dd10f6803ef02be091bc1f097c8..12a54a818932b55bc14f9b2b86ce2e086f7fc092 100644 (file)
@@ -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