mirror of
https://github.com/netbox-community/netbox.git
synced 2024-05-10 07:54:54 +00:00
#4835: Cleanup and improved error handling
This commit is contained in:
@ -1,6 +1,6 @@
|
|||||||
# NetBox v2.8
|
# NetBox v2.8
|
||||||
|
|
||||||
## v2.8.7 (FUTURE)
|
## v2.8.8 (FUTURE)
|
||||||
|
|
||||||
### Bug Fixes
|
### Bug Fixes
|
||||||
|
|
||||||
|
@ -594,16 +594,6 @@ class DynamicModelChoiceMixin:
|
|||||||
filter = django_filters.ModelChoiceFilter
|
filter = django_filters.ModelChoiceFilter
|
||||||
widget = APISelect
|
widget = APISelect
|
||||||
|
|
||||||
def filter_queryset(self, data):
|
|
||||||
field_name = getattr(self, 'to_field_name') or 'pk'
|
|
||||||
# If multiple values have been provided, use only the last.
|
|
||||||
if type(data) in (list, tuple):
|
|
||||||
data = data[-1]
|
|
||||||
filter = self.filter(
|
|
||||||
field_name=field_name
|
|
||||||
)
|
|
||||||
return filter.filter(self.queryset, data)
|
|
||||||
|
|
||||||
def get_bound_field(self, form, field_name):
|
def get_bound_field(self, form, field_name):
|
||||||
bound_field = BoundField(form, self, field_name)
|
bound_field = BoundField(form, self, field_name)
|
||||||
|
|
||||||
@ -611,7 +601,13 @@ class DynamicModelChoiceMixin:
|
|||||||
# will be populated on-demand via the APISelect widget.
|
# will be populated on-demand via the APISelect widget.
|
||||||
data = bound_field.value()
|
data = bound_field.value()
|
||||||
if data:
|
if data:
|
||||||
self.queryset = self.filter_queryset(data)
|
field_name = getattr(self, 'to_field_name') or 'pk'
|
||||||
|
filter = self.filter(field_name=field_name)
|
||||||
|
try:
|
||||||
|
self.queryset = filter.filter(self.queryset, data)
|
||||||
|
except TypeError:
|
||||||
|
# Catch any error caused by invalid initial data passed from the user
|
||||||
|
self.queryset = self.queryset.none()
|
||||||
else:
|
else:
|
||||||
self.queryset = self.queryset.none()
|
self.queryset = self.queryset.none()
|
||||||
|
|
||||||
@ -641,17 +637,6 @@ class DynamicModelMultipleChoiceField(DynamicModelChoiceMixin, forms.ModelMultip
|
|||||||
filter = django_filters.ModelMultipleChoiceFilter
|
filter = django_filters.ModelMultipleChoiceFilter
|
||||||
widget = APISelectMultiple
|
widget = APISelectMultiple
|
||||||
|
|
||||||
def filter_queryset(self, data):
|
|
||||||
field_name = getattr(self, 'to_field_name') or 'pk'
|
|
||||||
# Normalize data to a list
|
|
||||||
if type(data) not in (list, tuple):
|
|
||||||
data = [data]
|
|
||||||
filter = self.filter(
|
|
||||||
field_name=field_name,
|
|
||||||
lookup_expr='in'
|
|
||||||
)
|
|
||||||
return filter.filter(self.queryset, data)
|
|
||||||
|
|
||||||
|
|
||||||
class LaxURLField(forms.URLField):
|
class LaxURLField(forms.URLField):
|
||||||
"""
|
"""
|
||||||
|
Reference in New Issue
Block a user