]> git.ipfire.org Git - thirdparty/patchwork.git/commitdiff
REST: Order 'filters' code
authorStephen Finucane <stephen@that.guru>
Sun, 25 Mar 2018 18:28:23 +0000 (19:28 +0100)
committerStephen Finucane <stephen@that.guru>
Sat, 7 Apr 2018 16:43:27 +0000 (17:43 +0100)
Group custom filters and fields together followed by the actual filter
sets. This makes the file a little easier to comprehend.

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

index d207b2b6b3c750fefb18a6178aa78c4877c8350c..eed7995d1439cfac055b6b95039ae0b21f2dfdf6 100644 (file)
@@ -35,12 +35,7 @@ from patchwork.models import Series
 from patchwork.models import State
 
 
-class TimestampMixin(FilterSet):
-
-    # 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')
-
+# custom fields, filters
 
 class ModelMultiChoiceField(ModelChoiceField):
 
@@ -75,12 +70,6 @@ class ProjectFilter(ModelChoiceFilter):
     field_class = ProjectChoiceField
 
 
-class ProjectMixin(FilterSet):
-
-    project = ProjectFilter(to_field_name='linkname',
-                            queryset=Project.objects.all())
-
-
 class PersonChoiceField(ModelMultiChoiceField):
 
     def _get_filters(self, value):
@@ -95,24 +84,6 @@ class PersonFilter(ModelChoiceFilter):
     field_class = PersonChoiceField
 
 
-class SeriesFilter(ProjectMixin, TimestampMixin, FilterSet):
-
-    submitter = PersonFilter(queryset=Person.objects.all())
-
-    class Meta:
-        model = Series
-        fields = ('submitter', 'project')
-
-
-class CoverLetterFilter(ProjectMixin, TimestampMixin, FilterSet):
-
-    submitter = PersonFilter(queryset=Person.objects.all())
-
-    class Meta:
-        model = CoverLetter
-        fields = ('project', 'series', 'submitter')
-
-
 class StateChoiceField(ModelChoiceField):
 
     def prepare_value(self, value):
@@ -138,17 +109,6 @@ class StateFilter(ModelChoiceFilter):
     field_class = StateChoiceField
 
 
-class PatchFilter(ProjectMixin, TimestampMixin, FilterSet):
-
-    state = StateFilter(queryset=State.objects.all())
-    submitter = PersonFilter(queryset=Person.objects.all())
-
-    class Meta:
-        model = Patch
-        fields = ('project', 'series', 'submitter', 'delegate',
-                  'state', 'archived')
-
-
 class UserChoiceField(ModelMultiChoiceField):
 
     def _get_filters(self, value):
@@ -163,6 +123,50 @@ class UserFilter(ModelChoiceFilter):
     field_class = UserChoiceField
 
 
+# filter sets
+
+class TimestampMixin(FilterSet):
+
+    # 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 ProjectMixin(FilterSet):
+
+    project = ProjectFilter(to_field_name='linkname',
+                            queryset=Project.objects.all())
+
+
+class SeriesFilter(ProjectMixin, TimestampMixin, FilterSet):
+
+    submitter = PersonFilter(queryset=Person.objects.all())
+
+    class Meta:
+        model = Series
+        fields = ('submitter', 'project')
+
+
+class CoverLetterFilter(ProjectMixin, TimestampMixin, FilterSet):
+
+    submitter = PersonFilter(queryset=Person.objects.all())
+
+    class Meta:
+        model = CoverLetter
+        fields = ('project', 'series', 'submitter')
+
+
+class PatchFilter(ProjectMixin, TimestampMixin, FilterSet):
+
+    state = StateFilter(queryset=State.objects.all())
+    submitter = PersonFilter(queryset=Person.objects.all())
+
+    class Meta:
+        model = Patch
+        fields = ('project', 'series', 'submitter', 'delegate',
+                  'state', 'archived')
+
+
 class CheckFilter(TimestampMixin, FilterSet):
 
     user = UserFilter(queryset=User.objects.all())