Fixes #327: Disable rack assignment for installed child devices

This commit is contained in:
Jeremy Stretch 2016-07-19 13:09:15 -04:00
parent 2d690ca38a
commit c643e3a74f
2 changed files with 31 additions and 2 deletions

View File

@ -425,6 +425,11 @@ class DeviceForm(forms.ModelForm, BootstrapMixin):
else:
self.fields['device_type'].choices = []
# Disable rack assignment if this is a child device installed in a parent device
if self.instance.device_type.is_child_device and hasattr(self.instance, 'parent_bay'):
self.fields['site'].disabled = True
self.fields['rack'].disabled = True
class BaseDeviceFromCSVForm(forms.ModelForm):
device_role = forms.ModelChoiceField(queryset=DeviceRole.objects.all(), to_field_name='name',

View File

@ -22,8 +22,32 @@
<div class="panel-body">
{% render_field form.site %}
{% render_field form.rack %}
{% render_field form.face %}
{% render_field form.position %}
{% if obj.device_type.is_child_device and obj.parent_bay %}
<div class="form-group">
<label class="col-md-3 control-label">Parent device</label>
<div class="col-md-9">
<p class="form-control-static">
<a href="{% url 'dcim:device' pk=obj.parent_bay.device.pk %}">{{ obj.parent_bay.device }}</a>
</p>
</div>
</div>
<div class="form-group">
<label class="col-md-3 control-label">Parent bay</label>
<div class="col-md-9">
<p class="form-control-static">
{{ obj.parent_bay.name }}
{% if perms.dcim.change_devicebay %}
<a href="{% url 'dcim:devicebay_depopulate' pk=obj.parent_bay.pk %}" class="btn btn-danger btn-xs">
<i class="glyphicon glyphicon-remove" aria-hidden="true" title="Remove device"></i> Remove
</a>
{% endif %}
</p>
</div>
</div>
{% elif not obj.device_type.is_child_device %}
{% render_field form.face %}
{% render_field form.position %}
{% endif %}
</div>
</div>
<div class="panel panel-default">