[PATCH 6/7] REST: Use ModelMultipleChoiceField for other fields
Daniel Axtens
dja at axtens.net
Wed May 9 01:53:39 AEST 2018
Stephen Finucane <stephen at that.guru> writes:
> There's benefit to being able to do stuff like select multiple patches.
> Let's do that.
This all seems OK.
Regards,
Daniel
>
> Signed-off-by: Stephen Finucane <stephen at that.guru>
> ---
> patchwork/api/filters.py | 26 ++++++++++++++++++++++----
> 1 file changed, 22 insertions(+), 4 deletions(-)
>
> diff --git a/patchwork/api/filters.py b/patchwork/api/filters.py
> index afef10f4..4d8d504d 100644
> --- a/patchwork/api/filters.py
> +++ b/patchwork/api/filters.py
> @@ -41,6 +41,9 @@ from patchwork.models import State
> class ModelMultipleChoiceField(BaseMultipleChoiceField):
>
> def _get_filter(self, value):
> + if not self.alternate_lookup:
> + return 'pk', value
> +
> try:
> return 'pk', int(value)
> except ValueError:
> @@ -88,14 +91,14 @@ class ModelMultipleChoiceField(BaseMultipleChoiceField):
> return qs
>
>
> -class ProjectChoiceField(ModelMultipleChoiceField):
> +class BaseField(ModelMultipleChoiceField):
>
> - alternate_lookup = 'linkname__iexact'
> + alternate_lookup = None
>
>
> -class ProjectFilter(ModelMultipleChoiceFilter):
> +class BaseFilter(ModelMultipleChoiceFilter):
>
> - field_class = ProjectChoiceField
> + field_class = BaseField
>
>
> class PersonChoiceField(ModelMultipleChoiceField):
> @@ -108,6 +111,16 @@ class PersonFilter(ModelMultipleChoiceFilter):
> field_class = PersonChoiceField
>
>
> +class ProjectChoiceField(ModelMultipleChoiceField):
> +
> + alternate_lookup = 'linkname__iexact'
> +
> +
> +class ProjectFilter(ModelMultipleChoiceFilter):
> +
> + field_class = ProjectChoiceField
> +
> +
> class StateChoiceField(ModelMultipleChoiceField):
>
> def _get_filter(self, value):
> @@ -154,6 +167,7 @@ class SeriesFilterSet(TimestampMixin, FilterSet):
> class CoverLetterFilterSet(TimestampMixin, FilterSet):
>
> project = ProjectFilter(queryset=Project.objects.all())
> + series = BaseFilter(queryset=Project.objects.all())
> submitter = PersonFilter(queryset=Person.objects.all())
>
> class Meta:
> @@ -164,6 +178,7 @@ class CoverLetterFilterSet(TimestampMixin, FilterSet):
> class PatchFilterSet(TimestampMixin, FilterSet):
>
> project = ProjectFilter(queryset=Project.objects.all())
> + series = BaseFilter(queryset=Series.objects.all())
> submitter = PersonFilter(queryset=Person.objects.all())
> delegate = UserFilter(queryset=User.objects.all())
> state = StateFilter(queryset=State.objects.all())
> @@ -186,6 +201,9 @@ class CheckFilterSet(TimestampMixin, FilterSet):
> class EventFilterSet(TimestampMixin, FilterSet):
>
> project = ProjectFilter(queryset=Project.objects.all())
> + series = BaseFilter(queryset=Series.objects.all())
> + patch = BaseFilter(queryset=Patch.objects.all())
> + cover = BaseFilter(queryset=CoverLetter.objects.all())
>
> class Meta:
> model = Event
> --
> 2.14.3
>
> _______________________________________________
> Patchwork mailing list
> Patchwork at lists.ozlabs.org
> https://lists.ozlabs.org/listinfo/patchwork
More information about the Patchwork
mailing list