mirror of
https://github.com/netbox-community/netbox.git
synced 2025-07-29 11:56:25 -06:00
Updated IP address assignment form
This commit is contained in:
parent
8cd2d33496
commit
d91a8737c0
@ -346,20 +346,54 @@ class IPAddressBulkAddForm(BootstrapMixin, forms.Form):
|
|||||||
|
|
||||||
|
|
||||||
class IPAddressAssignForm(BootstrapMixin, forms.Form):
|
class IPAddressAssignForm(BootstrapMixin, forms.Form):
|
||||||
site = forms.ModelChoiceField(queryset=Site.objects.all(), label='Site', required=False,
|
site = forms.ModelChoiceField(
|
||||||
widget=forms.Select(attrs={'filter-for': 'rack'}))
|
queryset=Site.objects.all(),
|
||||||
rack = forms.ModelChoiceField(queryset=Rack.objects.all(), label='Rack', required=False,
|
label='Site',
|
||||||
widget=APISelect(api_url='/api/dcim/racks/?site_id={{site}}',
|
required=False,
|
||||||
display_field='display_name', attrs={'filter-for': 'device'}))
|
widget=forms.Select(
|
||||||
device = forms.ModelChoiceField(queryset=Device.objects.all(), label='Device', required=False,
|
attrs={'filter-for': 'rack'}
|
||||||
widget=APISelect(api_url='/api/dcim/devices/?rack_id={{rack}}',
|
)
|
||||||
display_field='display_name', attrs={'filter-for': 'interface'}))
|
)
|
||||||
livesearch = forms.CharField(required=False, label='Device', widget=Livesearch(
|
rack = forms.ModelChoiceField(
|
||||||
query_key='q', query_url='dcim-api:device_list', field_to_update='device')
|
queryset=Rack.objects.all(),
|
||||||
|
label='Rack',
|
||||||
|
required=False,
|
||||||
|
widget=APISelect(
|
||||||
|
api_url='/api/dcim/racks/?site_id={{site}}',
|
||||||
|
display_field='display_name',
|
||||||
|
attrs={'filter-for': 'device', 'nullable': 'true'}
|
||||||
|
)
|
||||||
|
)
|
||||||
|
device = forms.ModelChoiceField(
|
||||||
|
queryset=Device.objects.all(),
|
||||||
|
label='Device',
|
||||||
|
required=False,
|
||||||
|
widget=APISelect(
|
||||||
|
api_url='/api/dcim/devices/?site_id={{site}}&rack_id={{rack}}',
|
||||||
|
display_field='display_name',
|
||||||
|
attrs={'filter-for': 'interface'}
|
||||||
|
)
|
||||||
|
)
|
||||||
|
livesearch = forms.CharField(
|
||||||
|
required=False,
|
||||||
|
label='Device',
|
||||||
|
widget=Livesearch(
|
||||||
|
query_key='q',
|
||||||
|
query_url='dcim-api:device_list',
|
||||||
|
field_to_update='device'
|
||||||
|
)
|
||||||
|
)
|
||||||
|
interface = forms.ModelChoiceField(
|
||||||
|
queryset=Interface.objects.all(),
|
||||||
|
label='Interface',
|
||||||
|
widget=APISelect(
|
||||||
|
api_url='/api/dcim/devices/{{device}}/interfaces/'
|
||||||
|
)
|
||||||
|
)
|
||||||
|
set_as_primary = forms.BooleanField(
|
||||||
|
label='Set as primary IP for device',
|
||||||
|
required=False
|
||||||
)
|
)
|
||||||
interface = forms.ModelChoiceField(queryset=Interface.objects.all(), label='Interface',
|
|
||||||
widget=APISelect(api_url='/api/dcim/devices/{{device}}/interfaces/'))
|
|
||||||
set_as_primary = forms.BooleanField(label='Set as primary IP for device', required=False)
|
|
||||||
|
|
||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
|
|
||||||
|
@ -559,6 +559,8 @@ def ipaddress_assign(request, pk):
|
|||||||
device.save()
|
device.save()
|
||||||
|
|
||||||
return redirect('ipam:ipaddress', pk=ipaddress.pk)
|
return redirect('ipam:ipaddress', pk=ipaddress.pk)
|
||||||
|
else:
|
||||||
|
assert False, form.errors
|
||||||
|
|
||||||
else:
|
else:
|
||||||
form = forms.IPAddressAssignForm()
|
form = forms.IPAddressAssignForm()
|
||||||
|
@ -77,11 +77,7 @@ $(document).ready(function() {
|
|||||||
|
|
||||||
// Wipe out any existing options within the child field and create a default option
|
// Wipe out any existing options within the child field and create a default option
|
||||||
child_field.empty();
|
child_field.empty();
|
||||||
var default_option = $("<option></option>").attr("value", "").text("---------");
|
child_field.append($("<option></option>").attr("value", "").text("---------"));
|
||||||
if (child_field.attr('nullable') == 'true') {
|
|
||||||
default_option.attr("value", "0");
|
|
||||||
}
|
|
||||||
child_field.append(default_option);
|
|
||||||
|
|
||||||
if ($(this).val() || $(this).attr('nullable') == 'true') {
|
if ($(this).val() || $(this).attr('nullable') == 'true') {
|
||||||
var api_url = child_field.attr('api-url');
|
var api_url = child_field.attr('api-url');
|
||||||
@ -96,7 +92,7 @@ $(document).ready(function() {
|
|||||||
var filter_field = $('#id_' + match[1]);
|
var filter_field = $('#id_' + match[1]);
|
||||||
if (filter_field.val()) {
|
if (filter_field.val()) {
|
||||||
api_url = api_url.replace(match[0], filter_field.val());
|
api_url = api_url.replace(match[0], filter_field.val());
|
||||||
} else {
|
} else if ($(this).attr('nullable') == 'true') {
|
||||||
api_url = api_url.replace(match[0], '0');
|
api_url = api_url.replace(match[0], '0');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user