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):
field_class = ProjectChoiceField
-class ProjectMixin(FilterSet):
-
- project = ProjectFilter(to_field_name='linkname',
- queryset=Project.objects.all())
-
-
class PersonChoiceField(ModelMultiChoiceField):
def _get_filters(self, value):
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):
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):
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())