mirror of
https://github.com/netbox-community/netbox.git
synced 2025-12-19 03:42:25 -06:00
Merge branch 'develop' into feature
This commit is contained in:
@@ -9,6 +9,7 @@ from drf_spectacular.types import OpenApiTypes
|
||||
__all__ = (
|
||||
'ContentTypeFilter',
|
||||
'MACAddressFilter',
|
||||
'MultiValueArrayFilter',
|
||||
'MultiValueCharFilter',
|
||||
'MultiValueDateFilter',
|
||||
'MultiValueDateTimeFilter',
|
||||
@@ -85,6 +86,21 @@ class MultiValueTimeFilter(django_filters.MultipleChoiceFilter):
|
||||
field_class = multivalue_field_factory(forms.TimeField)
|
||||
|
||||
|
||||
@extend_schema_field(OpenApiTypes.STR)
|
||||
class MultiValueArrayFilter(django_filters.MultipleChoiceFilter):
|
||||
field_class = multivalue_field_factory(forms.CharField)
|
||||
|
||||
def __init__(self, *args, lookup_expr='contains', **kwargs):
|
||||
# Set default lookup_expr to 'contains'
|
||||
super().__init__(*args, lookup_expr=lookup_expr, **kwargs)
|
||||
|
||||
def get_filter_predicate(self, v):
|
||||
# If filtering for null values, ignore lookup_expr
|
||||
if v is None:
|
||||
return {self.field_name: None}
|
||||
return super().get_filter_predicate(v)
|
||||
|
||||
|
||||
class MACAddressFilter(django_filters.CharFilter):
|
||||
pass
|
||||
|
||||
|
||||
@@ -43,7 +43,7 @@ class DynamicMultipleChoiceField(forms.MultipleChoiceField):
|
||||
|
||||
if data is not None:
|
||||
self.choices = [
|
||||
choice for choice in self.choices if choice[0] in data
|
||||
choice for choice in self.choices if choice[0] and choice[0] in data
|
||||
]
|
||||
|
||||
return bound_field
|
||||
|
||||
Reference in New Issue
Block a user