mirror of
https://github.com/netbox-community/netbox.git
synced 2025-07-25 01:48:38 -06:00
Use multi-value filters for custom fields
This commit is contained in:
parent
1ce9192369
commit
32205045ba
@ -1,6 +1,7 @@
|
|||||||
import re
|
import re
|
||||||
from datetime import datetime, date
|
from datetime import datetime, date
|
||||||
|
|
||||||
|
import django_filters
|
||||||
from django import forms
|
from django import forms
|
||||||
from django.contrib.contenttypes.models import ContentType
|
from django.contrib.contenttypes.models import ContentType
|
||||||
from django.contrib.postgres.fields import ArrayField
|
from django.contrib.postgres.fields import ArrayField
|
||||||
@ -8,11 +9,11 @@ from django.core.validators import RegexValidator, ValidationError
|
|||||||
from django.db import models
|
from django.db import models
|
||||||
from django.urls import reverse
|
from django.urls import reverse
|
||||||
from django.utils.safestring import mark_safe
|
from django.utils.safestring import mark_safe
|
||||||
from django_filters import filters
|
|
||||||
|
|
||||||
from extras.choices import *
|
from extras.choices import *
|
||||||
from extras.utils import FeatureQuery, extras_features
|
from extras.utils import FeatureQuery, extras_features
|
||||||
from netbox.models import ChangeLoggedModel
|
from netbox.models import ChangeLoggedModel
|
||||||
|
from utilities import filters
|
||||||
from utilities.forms import (
|
from utilities.forms import (
|
||||||
CSVChoiceField, DatePicker, LaxURLField, StaticSelectMultiple, StaticSelect, add_blank_choice,
|
CSVChoiceField, DatePicker, LaxURLField, StaticSelectMultiple, StaticSelect, add_blank_choice,
|
||||||
)
|
)
|
||||||
@ -327,31 +328,29 @@ class CustomField(ChangeLoggedModel):
|
|||||||
CustomFieldTypeChoices.TYPE_LONGTEXT,
|
CustomFieldTypeChoices.TYPE_LONGTEXT,
|
||||||
CustomFieldTypeChoices.TYPE_URL,
|
CustomFieldTypeChoices.TYPE_URL,
|
||||||
):
|
):
|
||||||
filter_class = filters.CharFilter
|
filter_class = filters.MultiValueCharFilter
|
||||||
if self.filter_logic == CustomFieldFilterLogicChoices.FILTER_LOOSE:
|
if self.filter_logic == CustomFieldFilterLogicChoices.FILTER_LOOSE:
|
||||||
kwargs['lookup_expr'] = 'icontains'
|
kwargs['lookup_expr'] = 'icontains'
|
||||||
|
|
||||||
# Integer
|
# Integer
|
||||||
elif self.type == CustomFieldTypeChoices.TYPE_INTEGER:
|
elif self.type == CustomFieldTypeChoices.TYPE_INTEGER:
|
||||||
# TODO: Remove dirty hack to change lookup type from Decimal
|
filter_class = filters.MultiValueNumberFilter
|
||||||
filter_class = filters.NumberFilter
|
|
||||||
filter_class.field_class = forms.IntegerField
|
|
||||||
|
|
||||||
# Boolean
|
# Boolean
|
||||||
elif self.type == CustomFieldTypeChoices.TYPE_BOOLEAN:
|
elif self.type == CustomFieldTypeChoices.TYPE_BOOLEAN:
|
||||||
filter_class = filters.BooleanFilter
|
filter_class = django_filters.BooleanFilter
|
||||||
|
|
||||||
# Date
|
# Date
|
||||||
elif self.type == CustomFieldTypeChoices.TYPE_DATE:
|
elif self.type == CustomFieldTypeChoices.TYPE_DATE:
|
||||||
filter_class = filters.DateFilter
|
filter_class = filters.MultiValueDateFilter
|
||||||
|
|
||||||
# Select
|
# Select
|
||||||
elif self.type == CustomFieldTypeChoices.TYPE_SELECT:
|
elif self.type == CustomFieldTypeChoices.TYPE_SELECT:
|
||||||
filter_class = filters.CharFilter
|
filter_class = filters.MultiValueCharFilter
|
||||||
|
|
||||||
# Multiselect
|
# Multiselect
|
||||||
elif self.type == CustomFieldTypeChoices.TYPE_MULTISELECT:
|
elif self.type == CustomFieldTypeChoices.TYPE_MULTISELECT:
|
||||||
filter_class = filters.CharFilter
|
filter_class = filters.MultiValueCharFilter
|
||||||
kwargs['lookup_expr'] = 'has_key'
|
kwargs['lookup_expr'] = 'has_key'
|
||||||
|
|
||||||
# Unsupported custom field type
|
# Unsupported custom field type
|
||||||
|
Loading…
Reference in New Issue
Block a user