mirror of
https://github.com/netbox-community/netbox.git
synced 2025-07-24 09:28:38 -06:00
Change to NullableMultipleChoiceFilter
This commit is contained in:
parent
05ee5a5145
commit
98ba553466
@ -1,3 +1,4 @@
|
|||||||
|
from django.conf import settings
|
||||||
from django.utils.translation import gettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
|
|
||||||
from utilities.choices import ChoiceSet
|
from utilities.choices import ChoiceSet
|
||||||
@ -1482,7 +1483,7 @@ class CableTypeChoices(ChoiceSet):
|
|||||||
TYPE_AOC = 'aoc'
|
TYPE_AOC = 'aoc'
|
||||||
TYPE_POWER = 'power'
|
TYPE_POWER = 'power'
|
||||||
TYPE_USB = 'usb'
|
TYPE_USB = 'usb'
|
||||||
TYPE_EMPTY = 'EMPTY'
|
TYPE_EMPTY = settings.FILTERS_NULL_CHOICE_VALUE
|
||||||
|
|
||||||
CHOICES = (
|
CHOICES = (
|
||||||
(
|
(
|
||||||
@ -1519,7 +1520,7 @@ class CableTypeChoices(ChoiceSet):
|
|||||||
_('Other'), (
|
_('Other'), (
|
||||||
(TYPE_USB, _('USB')),
|
(TYPE_USB, _('USB')),
|
||||||
(TYPE_POWER, _('Power')),
|
(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 users.models import User
|
||||||
from utilities.filters import (
|
from utilities.filters import (
|
||||||
ContentTypeFilter, MultiValueCharFilter, MultiValueMACAddressFilter, MultiValueNumberFilter, MultiValueWWNFilter,
|
ContentTypeFilter, MultiValueCharFilter, MultiValueMACAddressFilter, MultiValueNumberFilter, MultiValueWWNFilter,
|
||||||
NumericArrayFilter, TreeNodeMultipleChoiceFilter, EmptyStringMultipleChoiceFilter,
|
NumericArrayFilter, TreeNodeMultipleChoiceFilter, NullableMultipleChoiceFilter,
|
||||||
)
|
)
|
||||||
from virtualization.models import Cluster, ClusterGroup
|
from virtualization.models import Cluster, ClusterGroup
|
||||||
from vpn.models import L2VPN
|
from vpn.models import L2VPN
|
||||||
@ -1980,7 +1980,7 @@ class CableFilterSet(TenancyFilterSet, NetBoxModelFilterSet):
|
|||||||
method='_unterminated',
|
method='_unterminated',
|
||||||
label=_('Unterminated'),
|
label=_('Unterminated'),
|
||||||
)
|
)
|
||||||
type = EmptyStringMultipleChoiceFilter(
|
type = NullableMultipleChoiceFilter(
|
||||||
choices=CableTypeChoices
|
choices=CableTypeChoices
|
||||||
)
|
)
|
||||||
status = django_filters.MultipleChoiceFilter(
|
status = django_filters.MultipleChoiceFilter(
|
||||||
|
@ -143,6 +143,14 @@ class NullableCharFieldFilter(django_filters.CharFilter):
|
|||||||
return qs.distinct() if self.distinct else qs
|
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):
|
class NumericArrayFilter(django_filters.NumberFilter):
|
||||||
"""
|
"""
|
||||||
Filter based on the presence of an integer within an ArrayField.
|
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
|
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