]> git.ipfire.org Git - thirdparty/patchwork.git/commitdiff
REST: Simplify ModelMultiChoiceField
authorStephen Finucane <stephen@that.guru>
Wed, 11 Apr 2018 16:13:33 +0000 (17:13 +0100)
committerDaniel Axtens <dja@axtens.net>
Wed, 9 May 2018 16:19:50 +0000 (02:19 +1000)
We're actually going to remove this shortly but the new technique works
for both the current approach and the approach we adopt in future patches.

Signed-off-by: Stephen Finucane <stephen@that.guru>
[dja: commit message, drop dead code]
Signed-off-by: Daniel Axtens <dja@axtens.net>
patchwork/api/filters.py

index 25956e981c20ecc706e8a922a53f98e79bcd0519..113ab8d35d7e49bcba55f8ac06e6228b819a1e45 100644 (file)
@@ -39,14 +39,14 @@ from patchwork.models import State
 
 class ModelMultiChoiceField(ModelChoiceField):
 
-    def _get_filters(self, value):
-        raise NotImplementedError
-
     def to_python(self, value):
         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 +58,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 +68,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 +103,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):