[PATCH 2/7] REST: Simplify ModelMultiChoiceField
Stephen Finucane
stephen at that.guru
Wed May 9 01:36:01 AEST 2018
On Wed, 2018-05-09 at 01:23 +1000, Daniel Axtens wrote:
> Stephen Finucane <stephen at that.guru> writes:
>
> > We're actually going to remove this shortly but the new technique works
> > for both.
>
> For both what?
Works for both the current approach and the approach we adopt in future
patches.
I think I should have removed '_get_filters' in this patch. Feel free
to do so when applying.
Stephen
> Apart from that, this patch leaves ModelMultiChoiceField._get_filters()
> as dead code, but it seems you do something with it later, so that's
> fine.
>
> Regards,
> Daniel
>
> >
> > 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
> >
> > _______________________________________________
> > Patchwork mailing list
> > Patchwork at lists.ozlabs.org
> > https://lists.ozlabs.org/listinfo/patchwork
More information about the Patchwork
mailing list