1
0
mirror of https://github.com/netbox-community/netbox.git synced 2024-05-10 07:54:54 +00:00

Remove value_field from APISelect; reference to_field_name on field

This commit is contained in:
Jeremy Stretch
2020-08-11 17:19:40 -04:00
parent fdc43f8279
commit a831e525da
9 changed files with 30 additions and 136 deletions

View File

@ -108,7 +108,6 @@ class ProviderFilterForm(BootstrapMixin, CustomFieldFilterForm):
to_field_name='slug',
required=False,
widget=APISelectMultiple(
value_field="slug",
filter_for={
'site': 'region'
}
@ -117,10 +116,7 @@ class ProviderFilterForm(BootstrapMixin, CustomFieldFilterForm):
site = DynamicModelMultipleChoiceField(
queryset=Site.objects.all(),
to_field_name='slug',
required=False,
widget=APISelectMultiple(
value_field="slug",
)
required=False
)
asn = forms.IntegerField(
required=False,
@ -271,18 +267,12 @@ class CircuitFilterForm(BootstrapMixin, TenancyFilterForm, CustomFieldFilterForm
type = DynamicModelMultipleChoiceField(
queryset=CircuitType.objects.all(),
to_field_name='slug',
required=False,
widget=APISelectMultiple(
value_field="slug",
)
required=False
)
provider = DynamicModelMultipleChoiceField(
queryset=Provider.objects.all(),
to_field_name='slug',
required=False,
widget=APISelectMultiple(
value_field="slug",
)
required=False
)
status = forms.MultipleChoiceField(
choices=CircuitStatusChoices,
@ -294,7 +284,6 @@ class CircuitFilterForm(BootstrapMixin, TenancyFilterForm, CustomFieldFilterForm
to_field_name='slug',
required=False,
widget=APISelectMultiple(
value_field="slug",
filter_for={
'site': 'region'
}
@ -303,10 +292,7 @@ class CircuitFilterForm(BootstrapMixin, TenancyFilterForm, CustomFieldFilterForm
site = DynamicModelMultipleChoiceField(
queryset=Site.objects.all(),
to_field_name='slug',
required=False,
widget=APISelectMultiple(
value_field="slug",
)
required=False
)
commit_rate = forms.IntegerField(
required=False,

View File

@ -70,7 +70,6 @@ class DeviceComponentFilterForm(BootstrapMixin, forms.Form):
to_field_name='slug',
required=False,
widget=APISelectMultiple(
value_field='slug',
filter_for={
'site': 'region'
}
@ -81,7 +80,6 @@ class DeviceComponentFilterForm(BootstrapMixin, forms.Form):
to_field_name='slug',
required=False,
widget=APISelectMultiple(
value_field="slug",
filter_for={
'device_id': 'site',
}
@ -348,10 +346,7 @@ class SiteFilterForm(BootstrapMixin, TenancyFilterForm, CustomFieldFilterForm):
region = DynamicModelMultipleChoiceField(
queryset=Region.objects.all(),
to_field_name='slug',
required=False,
widget=APISelectMultiple(
value_field="slug",
)
required=False
)
tag = TagFilterField(model)
@ -409,7 +404,6 @@ class RackGroupFilterForm(BootstrapMixin, forms.Form):
to_field_name='slug',
required=False,
widget=APISelectMultiple(
value_field="slug",
filter_for={
'site': 'region',
'parent': 'region',
@ -421,7 +415,6 @@ class RackGroupFilterForm(BootstrapMixin, forms.Form):
to_field_name='slug',
required=False,
widget=APISelectMultiple(
value_field="slug",
filter_for={
'parent': 'site',
}
@ -430,11 +423,7 @@ class RackGroupFilterForm(BootstrapMixin, forms.Form):
parent = DynamicModelMultipleChoiceField(
queryset=RackGroup.objects.all(),
to_field_name='slug',
required=False,
widget=APISelectMultiple(
api_url="/api/dcim/rack-groups/",
value_field="slug",
)
required=False
)
@ -662,7 +651,6 @@ class RackFilterForm(BootstrapMixin, TenancyFilterForm, CustomFieldFilterForm):
to_field_name='slug',
required=False,
widget=APISelectMultiple(
value_field="slug",
filter_for={
'site': 'region'
}
@ -673,7 +661,6 @@ class RackFilterForm(BootstrapMixin, TenancyFilterForm, CustomFieldFilterForm):
to_field_name='slug',
required=False,
widget=APISelectMultiple(
value_field="slug",
filter_for={
'group_id': 'site'
}
@ -699,7 +686,6 @@ class RackFilterForm(BootstrapMixin, TenancyFilterForm, CustomFieldFilterForm):
to_field_name='slug',
required=False,
widget=APISelectMultiple(
value_field="slug",
null_option=True,
)
)
@ -861,10 +847,7 @@ class RackReservationFilterForm(BootstrapMixin, TenancyFilterForm):
site = DynamicModelMultipleChoiceField(
queryset=Site.objects.all(),
to_field_name='slug',
required=False,
widget=APISelectMultiple(
value_field="slug",
)
required=False
)
group_id = DynamicModelMultipleChoiceField(
queryset=RackGroup.objects.prefetch_related('site'),
@ -972,10 +955,7 @@ class DeviceTypeFilterForm(BootstrapMixin, CustomFieldFilterForm):
manufacturer = DynamicModelMultipleChoiceField(
queryset=Manufacturer.objects.all(),
to_field_name='slug',
required=False,
widget=APISelectMultiple(
value_field="slug",
)
required=False
)
subdevice_role = forms.MultipleChoiceField(
choices=add_blank_choice(SubdeviceRoleChoices),
@ -2116,7 +2096,6 @@ class DeviceFilterForm(BootstrapMixin, LocalConfigContextFilterForm, TenancyFilt
to_field_name='slug',
required=False,
widget=APISelectMultiple(
value_field="slug",
filter_for={
'site': 'region'
}
@ -2127,7 +2106,6 @@ class DeviceFilterForm(BootstrapMixin, LocalConfigContextFilterForm, TenancyFilt
to_field_name='slug',
required=False,
widget=APISelectMultiple(
value_field="slug",
filter_for={
'rack_group_id': 'site',
'rack_id': 'site',
@ -2157,7 +2135,6 @@ class DeviceFilterForm(BootstrapMixin, LocalConfigContextFilterForm, TenancyFilt
to_field_name='slug',
required=False,
widget=APISelectMultiple(
value_field="slug",
)
)
manufacturer_id = DynamicModelMultipleChoiceField(
@ -2181,7 +2158,6 @@ class DeviceFilterForm(BootstrapMixin, LocalConfigContextFilterForm, TenancyFilt
to_field_name='slug',
required=False,
widget=APISelectMultiple(
value_field="slug",
null_option=True,
)
)
@ -3446,10 +3422,7 @@ class InventoryItemFilterForm(DeviceComponentFilterForm):
manufacturer = DynamicModelMultipleChoiceField(
queryset=Manufacturer.objects.all(),
to_field_name='slug',
required=False,
widget=APISelect(
value_field="slug",
)
required=False
)
serial = forms.CharField(
required=False
@ -3900,7 +3873,6 @@ class CableFilterForm(BootstrapMixin, forms.Form):
to_field_name='slug',
required=False,
widget=APISelectMultiple(
value_field="slug",
filter_for={
'rack_id': 'site',
'device_id': 'site',
@ -3912,7 +3884,6 @@ class CableFilterForm(BootstrapMixin, forms.Form):
to_field_name='slug',
required=False,
widget=APISelectMultiple(
value_field='slug',
filter_for={
'device_id': 'tenant',
}
@ -3962,7 +3933,6 @@ class ConsoleConnectionFilterForm(BootstrapMixin, forms.Form):
to_field_name='slug',
required=False,
widget=APISelectMultiple(
value_field="slug",
filter_for={
'device_id': 'site',
}
@ -3981,7 +3951,6 @@ class PowerConnectionFilterForm(BootstrapMixin, forms.Form):
to_field_name='slug',
required=False,
widget=APISelectMultiple(
value_field="slug",
filter_for={
'device_id': 'site',
}
@ -4000,7 +3969,6 @@ class InterfaceConnectionFilterForm(BootstrapMixin, forms.Form):
to_field_name='slug',
required=False,
widget=APISelectMultiple(
value_field="slug",
filter_for={
'device_id': 'site',
}
@ -4240,7 +4208,6 @@ class VirtualChassisFilterForm(BootstrapMixin, CustomFieldFilterForm):
to_field_name='slug',
required=False,
widget=APISelectMultiple(
value_field="slug",
filter_for={
'site': 'region'
}
@ -4249,17 +4216,13 @@ class VirtualChassisFilterForm(BootstrapMixin, CustomFieldFilterForm):
site = DynamicModelMultipleChoiceField(
queryset=Site.objects.all(),
to_field_name='slug',
required=False,
widget=APISelectMultiple(
value_field="slug",
)
required=False
)
tenant_group = DynamicModelMultipleChoiceField(
queryset=TenantGroup.objects.all(),
to_field_name='slug',
required=False,
widget=APISelectMultiple(
value_field="slug",
null_option=True,
filter_for={
'tenant': 'group'
@ -4271,7 +4234,6 @@ class VirtualChassisFilterForm(BootstrapMixin, CustomFieldFilterForm):
to_field_name='slug',
required=False,
widget=APISelectMultiple(
value_field="slug",
null_option=True,
)
)
@ -4369,7 +4331,6 @@ class PowerPanelFilterForm(BootstrapMixin, CustomFieldFilterForm):
to_field_name='slug',
required=False,
widget=APISelectMultiple(
value_field="slug",
filter_for={
'site': 'region'
}
@ -4380,7 +4341,6 @@ class PowerPanelFilterForm(BootstrapMixin, CustomFieldFilterForm):
to_field_name='slug',
required=False,
widget=APISelectMultiple(
value_field="slug",
filter_for={
'rack_group_id': 'site',
}
@ -4589,7 +4549,6 @@ class PowerFeedFilterForm(BootstrapMixin, CustomFieldFilterForm):
to_field_name='slug',
required=False,
widget=APISelectMultiple(
value_field="slug",
filter_for={
'site': 'region'
}
@ -4600,7 +4559,6 @@ class PowerFeedFilterForm(BootstrapMixin, CustomFieldFilterForm):
to_field_name='slug',
required=False,
widget=APISelectMultiple(
value_field="slug",
filter_for={
'power_panel_id': 'site',
'rack_id': 'site',

View File

@ -290,42 +290,27 @@ class ConfigContextFilterForm(BootstrapMixin, forms.Form):
region = DynamicModelMultipleChoiceField(
queryset=Region.objects.all(),
to_field_name='slug',
required=False,
widget=APISelectMultiple(
value_field="slug",
)
required=False
)
site = DynamicModelMultipleChoiceField(
queryset=Site.objects.all(),
to_field_name='slug',
required=False,
widget=APISelectMultiple(
value_field="slug",
)
required=False
)
role = DynamicModelMultipleChoiceField(
queryset=DeviceRole.objects.all(),
to_field_name='slug',
required=False,
widget=APISelectMultiple(
value_field="slug",
)
required=False
)
platform = DynamicModelMultipleChoiceField(
queryset=Platform.objects.all(),
to_field_name='slug',
required=False,
widget=APISelectMultiple(
value_field="slug",
)
required=False
)
cluster_group = DynamicModelMultipleChoiceField(
queryset=ClusterGroup.objects.all(),
to_field_name='slug',
required=False,
widget=APISelectMultiple(
value_field="slug",
)
required=False
)
cluster_id = DynamicModelMultipleChoiceField(
queryset=Cluster.objects.all(),
@ -335,26 +320,17 @@ class ConfigContextFilterForm(BootstrapMixin, forms.Form):
tenant_group = DynamicModelMultipleChoiceField(
queryset=TenantGroup.objects.all(),
to_field_name='slug',
required=False,
widget=APISelectMultiple(
value_field="slug",
)
required=False
)
tenant = DynamicModelMultipleChoiceField(
queryset=Tenant.objects.all(),
to_field_name='slug',
required=False,
widget=APISelectMultiple(
value_field="slug",
)
required=False
)
tag = DynamicModelMultipleChoiceField(
queryset=Tag.objects.all(),
to_field_name='slug',
required=False,
widget=APISelectMultiple(
value_field="slug",
)
required=False
)

View File

@ -217,10 +217,7 @@ class AggregateFilterForm(BootstrapMixin, CustomFieldFilterForm):
queryset=RIR.objects.all(),
to_field_name='slug',
required=False,
label='RIR',
widget=APISelectMultiple(
value_field="slug",
)
label='RIR'
)
tag = TagFilterField(model)
@ -481,7 +478,6 @@ class PrefixFilterForm(BootstrapMixin, TenancyFilterForm, CustomFieldFilterForm)
to_field_name='slug',
required=False,
widget=APISelectMultiple(
value_field="slug",
filter_for={
'site': 'region'
}
@ -492,7 +488,6 @@ class PrefixFilterForm(BootstrapMixin, TenancyFilterForm, CustomFieldFilterForm)
to_field_name='slug',
required=False,
widget=APISelectMultiple(
value_field="slug",
null_option=True,
)
)
@ -501,7 +496,6 @@ class PrefixFilterForm(BootstrapMixin, TenancyFilterForm, CustomFieldFilterForm)
to_field_name='slug',
required=False,
widget=APISelectMultiple(
value_field="slug",
null_option=True,
)
)
@ -978,7 +972,6 @@ class VLANGroupFilterForm(BootstrapMixin, forms.Form):
to_field_name='slug',
required=False,
widget=APISelectMultiple(
value_field="slug",
filter_for={
'site': 'region',
}
@ -989,7 +982,6 @@ class VLANGroupFilterForm(BootstrapMixin, forms.Form):
to_field_name='slug',
required=False,
widget=APISelectMultiple(
value_field="slug",
null_option=True,
)
)
@ -1145,7 +1137,6 @@ class VLANFilterForm(BootstrapMixin, TenancyFilterForm, CustomFieldFilterForm):
to_field_name='slug',
required=False,
widget=APISelectMultiple(
value_field="slug",
filter_for={
'site': 'region',
'group_id': 'region'
@ -1157,7 +1148,6 @@ class VLANFilterForm(BootstrapMixin, TenancyFilterForm, CustomFieldFilterForm):
to_field_name='slug',
required=False,
widget=APISelectMultiple(
value_field="slug",
null_option=True,
)
)
@ -1179,7 +1169,6 @@ class VLANFilterForm(BootstrapMixin, TenancyFilterForm, CustomFieldFilterForm):
to_field_name='slug',
required=False,
widget=APISelectMultiple(
value_field="slug",
null_option=True,
)
)

View File

@ -178,10 +178,7 @@ class SecretFilterForm(BootstrapMixin, CustomFieldFilterForm):
role = DynamicModelMultipleChoiceField(
queryset=SecretRole.objects.all(),
to_field_name='slug',
required=False,
widget=APISelectMultiple(
value_field="slug",
)
required=False
)
tag = TagFilterField(model)

View File

@ -107,7 +107,6 @@ class TenantFilterForm(BootstrapMixin, CustomFieldFilterForm):
to_field_name='slug',
required=False,
widget=APISelectMultiple(
value_field="slug",
null_option=True,
)
)
@ -154,7 +153,6 @@ class TenancyFilterForm(forms.Form):
to_field_name='slug',
required=False,
widget=APISelectMultiple(
value_field="slug",
null_option=True,
filter_for={
'tenant': 'group'
@ -166,7 +164,6 @@ class TenancyFilterForm(forms.Form):
to_field_name='slug',
required=False,
widget=APISelectMultiple(
value_field="slug",
null_option=True,
)
)

View File

@ -251,12 +251,19 @@ class DynamicModelChoiceMixin:
def __init__(self, *args, display_field='name', **kwargs):
self.display_field = display_field
# to_field_name is set by ModelChoiceField.__init__(), but we need to set it early for reference
# by widget_attrs()
self.to_field_name = kwargs.get('to_field_name')
super().__init__(*args, **kwargs)
def widget_attrs(self, widget):
return {
'display-field': self.display_field
attrs = {
'display-field': self.display_field,
}
if self.to_field_name:
attrs['value-field'] = self.to_field_name
return attrs
def get_bound_field(self, form, field_name):
bound_field = BoundField(form, self, field_name)

View File

@ -141,7 +141,6 @@ class APISelect(SelectWithDisabled):
:param api_url: API endpoint URL. Required if not set automatically by the parent field.
:param display_field: (Optional) Field to display for child in selection list. Defaults to `name`.
:param value_field: (Optional) Field to use for the option value in selection list. Defaults to `id`.
:param disabled_indicator: (Optional) Mark option as disabled if this field equates true.
:param filter_for: (Optional) A dict of chained form fields for which this field is a filter. The key is the
name of the filter-for field (child field) and the value is the name of the query param filter.
@ -153,7 +152,6 @@ class APISelect(SelectWithDisabled):
self,
api_url=None,
display_field=None,
value_field=None,
disabled_indicator=None,
filter_for=None,
additional_query_params=None,
@ -172,8 +170,6 @@ class APISelect(SelectWithDisabled):
self.attrs['data-full'] = full
if display_field:
self.attrs['display-field'] = display_field
if value_field:
self.attrs['value-field'] = value_field
if disabled_indicator:
self.attrs['disabled-indicator'] = disabled_indicator
if filter_for:

View File

@ -166,17 +166,13 @@ class ClusterFilterForm(BootstrapMixin, TenancyFilterForm, CustomFieldFilterForm
type = DynamicModelMultipleChoiceField(
queryset=ClusterType.objects.all(),
to_field_name='slug',
required=False,
widget=APISelectMultiple(
value_field='slug',
)
required=False
)
region = DynamicModelMultipleChoiceField(
queryset=Region.objects.all(),
to_field_name='slug',
required=False,
widget=APISelectMultiple(
value_field="slug",
filter_for={
'site': 'region'
}
@ -187,7 +183,6 @@ class ClusterFilterForm(BootstrapMixin, TenancyFilterForm, CustomFieldFilterForm
to_field_name='slug',
required=False,
widget=APISelectMultiple(
value_field='slug',
null_option=True,
)
)
@ -196,7 +191,6 @@ class ClusterFilterForm(BootstrapMixin, TenancyFilterForm, CustomFieldFilterForm
to_field_name='slug',
required=False,
widget=APISelectMultiple(
value_field='slug',
null_option=True,
)
)
@ -496,7 +490,6 @@ class VirtualMachineFilterForm(BootstrapMixin, TenancyFilterForm, CustomFieldFil
to_field_name='slug',
required=False,
widget=APISelectMultiple(
value_field="slug",
null_option=True,
)
)
@ -505,7 +498,6 @@ class VirtualMachineFilterForm(BootstrapMixin, TenancyFilterForm, CustomFieldFil
to_field_name='slug',
required=False,
widget=APISelectMultiple(
value_field="slug",
null_option=True,
)
)
@ -519,7 +511,6 @@ class VirtualMachineFilterForm(BootstrapMixin, TenancyFilterForm, CustomFieldFil
to_field_name='slug',
required=False,
widget=APISelectMultiple(
value_field="slug",
filter_for={
'site': 'region'
}
@ -530,7 +521,6 @@ class VirtualMachineFilterForm(BootstrapMixin, TenancyFilterForm, CustomFieldFil
to_field_name='slug',
required=False,
widget=APISelectMultiple(
value_field="slug",
null_option=True,
)
)
@ -539,7 +529,6 @@ class VirtualMachineFilterForm(BootstrapMixin, TenancyFilterForm, CustomFieldFil
to_field_name='slug',
required=False,
widget=APISelectMultiple(
value_field="slug",
null_option=True,
additional_query_params={
'vm_role': "True"
@ -556,7 +545,6 @@ class VirtualMachineFilterForm(BootstrapMixin, TenancyFilterForm, CustomFieldFil
to_field_name='slug',
required=False,
widget=APISelectMultiple(
value_field="slug",
null_option=True,
)
)