Updated IP address assignment form

This commit is contained in:
Jeremy Stretch 2017-02-17 14:04:23 -05:00
parent 8cd2d33496
commit d91a8737c0
3 changed files with 51 additions and 19 deletions

View File

@ -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):

View File

@ -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()

View File

@ -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');
} }
} }