mirror of
https://github.com/netbox-community/netbox.git
synced 2025-07-23 04:22:01 -06:00
Change to NullableMultipleChoiceFilter
This commit is contained in:
parent
7195f51c6c
commit
2ca4e971da
@ -1,3 +1,4 @@
|
||||
from django.conf import settings
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
|
||||
from utilities.choices import ChoiceSet
|
||||
@ -1470,7 +1471,7 @@ class CableTypeChoices(ChoiceSet):
|
||||
TYPE_AOC = 'aoc'
|
||||
TYPE_POWER = 'power'
|
||||
TYPE_USB = 'usb'
|
||||
TYPE_EMPTY = 'EMPTY'
|
||||
TYPE_EMPTY = settings.FILTERS_NULL_CHOICE_VALUE
|
||||
|
||||
CHOICES = (
|
||||
(
|
||||
@ -1507,7 +1508,7 @@ class CableTypeChoices(ChoiceSet):
|
||||
_('Other'), (
|
||||
(TYPE_USB, _('USB')),
|
||||
(TYPE_POWER, _('Power')),
|
||||
(TYPE_EMPTY, _('(unset)')),
|
||||
(settings.FILTERS_NULL_CHOICE_VALUE, _('(unset)')),
|
||||
)
|
||||
)
|
||||
)
|
||||
|
@ -18,7 +18,7 @@ from tenancy.models import *
|
||||
from users.models import User
|
||||
from utilities.filters import (
|
||||
ContentTypeFilter, MultiValueCharFilter, MultiValueMACAddressFilter, MultiValueNumberFilter, MultiValueWWNFilter,
|
||||
NumericArrayFilter, TreeNodeMultipleChoiceFilter, EmptyStringMultipleChoiceFilter,
|
||||
NumericArrayFilter, TreeNodeMultipleChoiceFilter, NullableMultipleChoiceFilter,
|
||||
)
|
||||
from virtualization.models import Cluster, ClusterGroup
|
||||
from vpn.models import L2VPN
|
||||
@ -1980,7 +1980,7 @@ class CableFilterSet(TenancyFilterSet, NetBoxModelFilterSet):
|
||||
method='_unterminated',
|
||||
label=_('Unterminated'),
|
||||
)
|
||||
type = EmptyStringMultipleChoiceFilter(
|
||||
type = NullableMultipleChoiceFilter(
|
||||
choices=CableTypeChoices
|
||||
)
|
||||
status = django_filters.MultipleChoiceFilter(
|
||||
|
@ -143,6 +143,14 @@ class NullableCharFieldFilter(django_filters.CharFilter):
|
||||
return qs.distinct() if self.distinct else qs
|
||||
|
||||
|
||||
class NullableMultipleChoiceFilter(django_filters.MultipleChoiceFilter):
|
||||
|
||||
def filter(self, qs, value):
|
||||
if settings.FILTERS_NULL_CHOICE_VALUE in value:
|
||||
value.append('')
|
||||
return super().filter(qs, value)
|
||||
|
||||
|
||||
class NumericArrayFilter(django_filters.NumberFilter):
|
||||
"""
|
||||
Filter based on the presence of an integer within an ArrayField.
|
||||
@ -171,12 +179,3 @@ class ContentTypeFilter(django_filters.CharFilter):
|
||||
f'{self.field_name}__model': model
|
||||
}
|
||||
)
|
||||
|
||||
|
||||
class EmptyStringMultipleChoiceFilter(django_filters.MultipleChoiceFilter):
|
||||
empty_value = 'EMPTY'
|
||||
|
||||
def filter(self, qs, value):
|
||||
if self.empty_value in value:
|
||||
value.append('')
|
||||
return super().filter(qs, value)
|
||||
|
Loading…
Reference in New Issue
Block a user