diff --git a/pulpcore/filters.py b/pulpcore/filters.py index 46bd6e1bf99..67154e65eee 100644 --- a/pulpcore/filters.py +++ b/pulpcore/filters.py @@ -128,7 +128,12 @@ class IdInFilter(BaseInFilter, filters.UUIDFilter): class HREFInFilter(BaseInFilter, filters.CharFilter): - pass + def filter(self, qs, value): + if value is None: + return qs + + pks = [extract_pk(href) for href in value] + return qs.filter(pk__in=pks) class PulpTypeFilter(filters.ChoiceFilter): @@ -271,7 +276,7 @@ class BaseFilterSet(filterset.FilterSet): help_text = {} pulp_id__in = IdInFilter(field_name="pk", lookup_expr="in") - pulp_href__in = HREFInFilter(field_name="pk", method="filter_pulp_href") + pulp_href__in = HREFInFilter(field_name="pk") q = ExpressionFilter() FILTER_DEFAULTS = { @@ -307,11 +312,6 @@ class BaseFilterSet(filterset.FilterSet): "ne": _("not equal to"), } - def filter_pulp_href(self, queryset, name, value): - # Convert each href to a pk - pks = [extract_pk(href) for href in value] - return queryset.filter(pk__in=pks) - @classmethod def get_filters(cls): filters = super().get_filters()