1
0
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:
Jeremy Stretch
2020-07-09 16:35:02 -04:00
parent d70140f148
commit 683ba5eed3
2 changed files with 8 additions and 23 deletions

View File

@ -594,16 +594,6 @@ class DynamicModelChoiceMixin:
filter = django_filters.ModelChoiceFilter
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):
bound_field = BoundField(form, self, field_name)
@ -611,7 +601,13 @@ class DynamicModelChoiceMixin:
# will be populated on-demand via the APISelect widget.
data = bound_field.value()
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:
self.queryset = self.queryset.none()
@ -641,17 +637,6 @@ class DynamicModelMultipleChoiceField(DynamicModelChoiceMixin, forms.ModelMultip
filter = django_filters.ModelMultipleChoiceFilter
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):
"""