[PATCH 2/7] REST: Simplify ModelMultiChoiceField
Stephen Finucane
stephen at that.guru
Thu Apr 12 02:13:33 AEST 2018
We're actually going to remove this shortly but the new technique works
for both.
Signed-off-by: Stephen Finucane <stephen at that.guru>
---
patchwork/api/filters.py | 23 +++++++----------------
1 file changed, 7 insertions(+), 16 deletions(-)
diff --git a/patchwork/api/filters.py b/patchwork/api/filters.py
index 25956e98..030f9af3 100644
--- a/patchwork/api/filters.py
+++ b/patchwork/api/filters.py
@@ -46,7 +46,10 @@ class ModelMultiChoiceField(ModelChoiceField):
if value in self.empty_values:
return None
- filters = self._get_filters(value)
+ try:
+ filters = {'pk': int(value)}
+ except ValueError:
+ filters = {self.alternate_lookup: value}
try:
value = self.queryset.get(**filters)
@@ -58,11 +61,7 @@ class ModelMultiChoiceField(ModelChoiceField):
class ProjectChoiceField(ModelMultiChoiceField):
- def _get_filters(self, value):
- try:
- return {'pk': int(value)}
- except ValueError:
- return {'linkname__iexact': value}
+ alternate_lookup = 'linkname__iexact'
class ProjectFilter(ModelChoiceFilter):
@@ -72,11 +71,7 @@ class ProjectFilter(ModelChoiceFilter):
class PersonChoiceField(ModelMultiChoiceField):
- def _get_filters(self, value):
- try:
- return {'pk': int(value)}
- except ValueError:
- return {'email__iexact': value}
+ alternate_lookup = 'email__iexact'
class PersonFilter(ModelChoiceFilter):
@@ -111,11 +106,7 @@ class StateFilter(ModelChoiceFilter):
class UserChoiceField(ModelMultiChoiceField):
- def _get_filters(self, value):
- try:
- return {'pk': int(value)}
- except ValueError:
- return {'username__iexact': value}
+ alternate_lookup = 'username__iexact'
class UserFilter(ModelChoiceFilter):
--
2.14.3
More information about the Patchwork
mailing list