mirror of
https://github.com/netbox-community/netbox.git
synced 2025-07-22 20:12:00 -06:00
#7844: Show module when viewing/editing device components
This commit is contained in:
parent
71d3dc6e44
commit
3b80f67e4d
@ -1148,6 +1148,13 @@ class InventoryItemTemplateForm(BootstrapMixin, forms.ModelForm):
|
|||||||
#
|
#
|
||||||
|
|
||||||
class ConsolePortForm(NetBoxModelForm):
|
class ConsolePortForm(NetBoxModelForm):
|
||||||
|
module = DynamicModelChoiceField(
|
||||||
|
queryset=Module.objects.all(),
|
||||||
|
required=False,
|
||||||
|
query_params={
|
||||||
|
'device_id': '$device',
|
||||||
|
}
|
||||||
|
)
|
||||||
tags = DynamicModelMultipleChoiceField(
|
tags = DynamicModelMultipleChoiceField(
|
||||||
queryset=Tag.objects.all(),
|
queryset=Tag.objects.all(),
|
||||||
required=False
|
required=False
|
||||||
@ -1156,7 +1163,7 @@ class ConsolePortForm(NetBoxModelForm):
|
|||||||
class Meta:
|
class Meta:
|
||||||
model = ConsolePort
|
model = ConsolePort
|
||||||
fields = [
|
fields = [
|
||||||
'device', 'name', 'label', 'type', 'speed', 'mark_connected', 'description', 'tags',
|
'device', 'module', 'name', 'label', 'type', 'speed', 'mark_connected', 'description', 'tags',
|
||||||
]
|
]
|
||||||
widgets = {
|
widgets = {
|
||||||
'device': forms.HiddenInput(),
|
'device': forms.HiddenInput(),
|
||||||
@ -1166,6 +1173,13 @@ class ConsolePortForm(NetBoxModelForm):
|
|||||||
|
|
||||||
|
|
||||||
class ConsoleServerPortForm(NetBoxModelForm):
|
class ConsoleServerPortForm(NetBoxModelForm):
|
||||||
|
module = DynamicModelChoiceField(
|
||||||
|
queryset=Module.objects.all(),
|
||||||
|
required=False,
|
||||||
|
query_params={
|
||||||
|
'device_id': '$device',
|
||||||
|
}
|
||||||
|
)
|
||||||
tags = DynamicModelMultipleChoiceField(
|
tags = DynamicModelMultipleChoiceField(
|
||||||
queryset=Tag.objects.all(),
|
queryset=Tag.objects.all(),
|
||||||
required=False
|
required=False
|
||||||
@ -1174,7 +1188,7 @@ class ConsoleServerPortForm(NetBoxModelForm):
|
|||||||
class Meta:
|
class Meta:
|
||||||
model = ConsoleServerPort
|
model = ConsoleServerPort
|
||||||
fields = [
|
fields = [
|
||||||
'device', 'name', 'label', 'type', 'speed', 'mark_connected', 'description', 'tags',
|
'device', 'module', 'name', 'label', 'type', 'speed', 'mark_connected', 'description', 'tags',
|
||||||
]
|
]
|
||||||
widgets = {
|
widgets = {
|
||||||
'device': forms.HiddenInput(),
|
'device': forms.HiddenInput(),
|
||||||
@ -1184,6 +1198,13 @@ class ConsoleServerPortForm(NetBoxModelForm):
|
|||||||
|
|
||||||
|
|
||||||
class PowerPortForm(NetBoxModelForm):
|
class PowerPortForm(NetBoxModelForm):
|
||||||
|
module = DynamicModelChoiceField(
|
||||||
|
queryset=Module.objects.all(),
|
||||||
|
required=False,
|
||||||
|
query_params={
|
||||||
|
'device_id': '$device',
|
||||||
|
}
|
||||||
|
)
|
||||||
tags = DynamicModelMultipleChoiceField(
|
tags = DynamicModelMultipleChoiceField(
|
||||||
queryset=Tag.objects.all(),
|
queryset=Tag.objects.all(),
|
||||||
required=False
|
required=False
|
||||||
@ -1192,7 +1213,8 @@ class PowerPortForm(NetBoxModelForm):
|
|||||||
class Meta:
|
class Meta:
|
||||||
model = PowerPort
|
model = PowerPort
|
||||||
fields = [
|
fields = [
|
||||||
'device', 'name', 'label', 'type', 'maximum_draw', 'allocated_draw', 'mark_connected', 'description',
|
'device', 'module', 'name', 'label', 'type', 'maximum_draw', 'allocated_draw', 'mark_connected',
|
||||||
|
'description',
|
||||||
'tags',
|
'tags',
|
||||||
]
|
]
|
||||||
widgets = {
|
widgets = {
|
||||||
@ -1202,6 +1224,13 @@ class PowerPortForm(NetBoxModelForm):
|
|||||||
|
|
||||||
|
|
||||||
class PowerOutletForm(NetBoxModelForm):
|
class PowerOutletForm(NetBoxModelForm):
|
||||||
|
module = DynamicModelChoiceField(
|
||||||
|
queryset=Module.objects.all(),
|
||||||
|
required=False,
|
||||||
|
query_params={
|
||||||
|
'device_id': '$device',
|
||||||
|
}
|
||||||
|
)
|
||||||
power_port = DynamicModelChoiceField(
|
power_port = DynamicModelChoiceField(
|
||||||
queryset=PowerPort.objects.all(),
|
queryset=PowerPort.objects.all(),
|
||||||
required=False,
|
required=False,
|
||||||
@ -1217,7 +1246,8 @@ class PowerOutletForm(NetBoxModelForm):
|
|||||||
class Meta:
|
class Meta:
|
||||||
model = PowerOutlet
|
model = PowerOutlet
|
||||||
fields = [
|
fields = [
|
||||||
'device', 'name', 'label', 'type', 'power_port', 'feed_leg', 'mark_connected', 'description', 'tags',
|
'device', 'module', 'name', 'label', 'type', 'power_port', 'feed_leg', 'mark_connected', 'description',
|
||||||
|
'tags',
|
||||||
]
|
]
|
||||||
widgets = {
|
widgets = {
|
||||||
'device': forms.HiddenInput(),
|
'device': forms.HiddenInput(),
|
||||||
@ -1227,6 +1257,13 @@ class PowerOutletForm(NetBoxModelForm):
|
|||||||
|
|
||||||
|
|
||||||
class InterfaceForm(InterfaceCommonForm, NetBoxModelForm):
|
class InterfaceForm(InterfaceCommonForm, NetBoxModelForm):
|
||||||
|
module = DynamicModelChoiceField(
|
||||||
|
queryset=Module.objects.all(),
|
||||||
|
required=False,
|
||||||
|
query_params={
|
||||||
|
'device_id': '$device',
|
||||||
|
}
|
||||||
|
)
|
||||||
parent = DynamicModelChoiceField(
|
parent = DynamicModelChoiceField(
|
||||||
queryset=Interface.objects.all(),
|
queryset=Interface.objects.all(),
|
||||||
required=False,
|
required=False,
|
||||||
@ -1299,7 +1336,7 @@ class InterfaceForm(InterfaceCommonForm, NetBoxModelForm):
|
|||||||
)
|
)
|
||||||
|
|
||||||
fieldsets = (
|
fieldsets = (
|
||||||
('Interface', ('device', 'name', 'type', 'speed', 'duplex', 'label', 'description', 'tags')),
|
('Interface', ('device', 'module', 'name', 'type', 'speed', 'duplex', 'label', 'description', 'tags')),
|
||||||
('Addressing', ('vrf', 'mac_address', 'wwn')),
|
('Addressing', ('vrf', 'mac_address', 'wwn')),
|
||||||
('Operation', ('mtu', 'tx_power', 'enabled', 'mgmt_only', 'mark_connected')),
|
('Operation', ('mtu', 'tx_power', 'enabled', 'mgmt_only', 'mark_connected')),
|
||||||
('Related Interfaces', ('parent', 'bridge', 'lag')),
|
('Related Interfaces', ('parent', 'bridge', 'lag')),
|
||||||
@ -1312,9 +1349,10 @@ class InterfaceForm(InterfaceCommonForm, NetBoxModelForm):
|
|||||||
class Meta:
|
class Meta:
|
||||||
model = Interface
|
model = Interface
|
||||||
fields = [
|
fields = [
|
||||||
'device', 'name', 'label', 'type', 'speed', 'duplex', 'enabled', 'parent', 'bridge', 'lag', 'mac_address', 'wwn', 'mtu',
|
'device', 'module', 'name', 'label', 'type', 'speed', 'duplex', 'enabled', 'parent', 'bridge', 'lag',
|
||||||
'mgmt_only', 'mark_connected', 'description', 'mode', 'rf_role', 'rf_channel', 'rf_channel_frequency',
|
'mac_address', 'wwn', 'mtu', 'mgmt_only', 'mark_connected', 'description', 'mode', 'rf_role', 'rf_channel',
|
||||||
'rf_channel_width', 'tx_power', 'wireless_lans', 'untagged_vlan', 'tagged_vlans', 'vrf', 'tags',
|
'rf_channel_frequency', 'rf_channel_width', 'tx_power', 'wireless_lans', 'untagged_vlan', 'tagged_vlans',
|
||||||
|
'vrf', 'tags',
|
||||||
]
|
]
|
||||||
widgets = {
|
widgets = {
|
||||||
'device': forms.HiddenInput(),
|
'device': forms.HiddenInput(),
|
||||||
@ -1336,6 +1374,13 @@ class InterfaceForm(InterfaceCommonForm, NetBoxModelForm):
|
|||||||
|
|
||||||
|
|
||||||
class FrontPortForm(NetBoxModelForm):
|
class FrontPortForm(NetBoxModelForm):
|
||||||
|
module = DynamicModelChoiceField(
|
||||||
|
queryset=Module.objects.all(),
|
||||||
|
required=False,
|
||||||
|
query_params={
|
||||||
|
'device_id': '$device',
|
||||||
|
}
|
||||||
|
)
|
||||||
rear_port = DynamicModelChoiceField(
|
rear_port = DynamicModelChoiceField(
|
||||||
queryset=RearPort.objects.all(),
|
queryset=RearPort.objects.all(),
|
||||||
query_params={
|
query_params={
|
||||||
@ -1350,7 +1395,7 @@ class FrontPortForm(NetBoxModelForm):
|
|||||||
class Meta:
|
class Meta:
|
||||||
model = FrontPort
|
model = FrontPort
|
||||||
fields = [
|
fields = [
|
||||||
'device', 'name', 'label', 'type', 'color', 'rear_port', 'rear_port_position', 'mark_connected',
|
'device', 'module', 'name', 'label', 'type', 'color', 'rear_port', 'rear_port_position', 'mark_connected',
|
||||||
'description', 'tags',
|
'description', 'tags',
|
||||||
]
|
]
|
||||||
widgets = {
|
widgets = {
|
||||||
@ -1360,6 +1405,13 @@ class FrontPortForm(NetBoxModelForm):
|
|||||||
|
|
||||||
|
|
||||||
class RearPortForm(NetBoxModelForm):
|
class RearPortForm(NetBoxModelForm):
|
||||||
|
module = DynamicModelChoiceField(
|
||||||
|
queryset=Module.objects.all(),
|
||||||
|
required=False,
|
||||||
|
query_params={
|
||||||
|
'device_id': '$device',
|
||||||
|
}
|
||||||
|
)
|
||||||
tags = DynamicModelMultipleChoiceField(
|
tags = DynamicModelMultipleChoiceField(
|
||||||
queryset=Tag.objects.all(),
|
queryset=Tag.objects.all(),
|
||||||
required=False
|
required=False
|
||||||
@ -1368,7 +1420,7 @@ class RearPortForm(NetBoxModelForm):
|
|||||||
class Meta:
|
class Meta:
|
||||||
model = RearPort
|
model = RearPort
|
||||||
fields = [
|
fields = [
|
||||||
'device', 'name', 'label', 'type', 'color', 'positions', 'mark_connected', 'description', 'tags',
|
'device', 'module', 'name', 'label', 'type', 'color', 'positions', 'mark_connected', 'description', 'tags',
|
||||||
]
|
]
|
||||||
widgets = {
|
widgets = {
|
||||||
'device': forms.HiddenInput(),
|
'device': forms.HiddenInput(),
|
||||||
|
@ -24,6 +24,16 @@
|
|||||||
<a href="{{ object.device.get_absolute_url }}">{{ object.device }}</a>
|
<a href="{{ object.device.get_absolute_url }}">{{ object.device }}</a>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th scope="row">Module</th>
|
||||||
|
<td>
|
||||||
|
{% if object.module %}
|
||||||
|
<a href="{{ object.module.get_absolute_url }}">{{ object.module }}</a>
|
||||||
|
{% else %}
|
||||||
|
{{ None|placeholder }}
|
||||||
|
{% endif %}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<th scope="row">Name</th>
|
<th scope="row">Name</th>
|
||||||
<td>{{ object.name }}</td>
|
<td>{{ object.name }}</td>
|
||||||
|
@ -24,6 +24,16 @@
|
|||||||
<a href="{{ object.device.get_absolute_url }}">{{ object.device }}</a>
|
<a href="{{ object.device.get_absolute_url }}">{{ object.device }}</a>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th scope="row">Module</th>
|
||||||
|
<td>
|
||||||
|
{% if object.module %}
|
||||||
|
<a href="{{ object.module.get_absolute_url }}">{{ object.module }}</a>
|
||||||
|
{% else %}
|
||||||
|
{{ None|placeholder }}
|
||||||
|
{% endif %}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<th scope="row">Name</th>
|
<th scope="row">Name</th>
|
||||||
<td>{{ object.name }}</td>
|
<td>{{ object.name }}</td>
|
||||||
|
@ -24,6 +24,16 @@
|
|||||||
<a href="{{ object.device.get_absolute_url }}">{{ object.device }}</a>
|
<a href="{{ object.device.get_absolute_url }}">{{ object.device }}</a>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th scope="row">Module</th>
|
||||||
|
<td>
|
||||||
|
{% if object.module %}
|
||||||
|
<a href="{{ object.module.get_absolute_url }}">{{ object.module }}</a>
|
||||||
|
{% else %}
|
||||||
|
{{ None|placeholder }}
|
||||||
|
{% endif %}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<th scope="row">Name</th>
|
<th scope="row">Name</th>
|
||||||
<td>{{ object.name }}</td>
|
<td>{{ object.name }}</td>
|
||||||
|
@ -34,6 +34,16 @@
|
|||||||
<a href="{{ object.device.get_absolute_url }}">{{ object.device }}</a>
|
<a href="{{ object.device.get_absolute_url }}">{{ object.device }}</a>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th scope="row">Module</th>
|
||||||
|
<td>
|
||||||
|
{% if object.module %}
|
||||||
|
<a href="{{ object.module.get_absolute_url }}">{{ object.module }}</a>
|
||||||
|
{% else %}
|
||||||
|
{{ None|placeholder }}
|
||||||
|
{% endif %}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<th scope="row">Name</th>
|
<th scope="row">Name</th>
|
||||||
<td>{{ object.name }}</td>
|
<td>{{ object.name }}</td>
|
||||||
|
@ -19,6 +19,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
{% render_field form.module %}
|
||||||
{% render_field form.name %}
|
{% render_field form.name %}
|
||||||
{% render_field form.type %}
|
{% render_field form.type %}
|
||||||
{% render_field form.speed %}
|
{% render_field form.speed %}
|
||||||
|
@ -24,6 +24,16 @@
|
|||||||
<a href="{{ object.device.get_absolute_url }}">{{ object.device }}</a>
|
<a href="{{ object.device.get_absolute_url }}">{{ object.device }}</a>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th scope="row">Module</th>
|
||||||
|
<td>
|
||||||
|
{% if object.module %}
|
||||||
|
<a href="{{ object.module.get_absolute_url }}">{{ object.module }}</a>
|
||||||
|
{% else %}
|
||||||
|
{{ None|placeholder }}
|
||||||
|
{% endif %}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<th scope="row">Name</th>
|
<th scope="row">Name</th>
|
||||||
<td>{{ object.name }}</td>
|
<td>{{ object.name }}</td>
|
||||||
|
@ -24,6 +24,16 @@
|
|||||||
<a href="{{ object.device.get_absolute_url }}">{{ object.device }}</a>
|
<a href="{{ object.device.get_absolute_url }}">{{ object.device }}</a>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th scope="row">Module</th>
|
||||||
|
<td>
|
||||||
|
{% if object.module %}
|
||||||
|
<a href="{{ object.module.get_absolute_url }}">{{ object.module }}</a>
|
||||||
|
{% else %}
|
||||||
|
{{ None|placeholder }}
|
||||||
|
{% endif %}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<th scope="row">Name</th>
|
<th scope="row">Name</th>
|
||||||
<td>{{ object.name }}</td>
|
<td>{{ object.name }}</td>
|
||||||
|
@ -24,6 +24,16 @@
|
|||||||
<a href="{{ object.device.get_absolute_url }}">{{ object.device }}</a>
|
<a href="{{ object.device.get_absolute_url }}">{{ object.device }}</a>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th scope="row">Module</th>
|
||||||
|
<td>
|
||||||
|
{% if object.module %}
|
||||||
|
<a href="{{ object.module.get_absolute_url }}">{{ object.module }}</a>
|
||||||
|
{% else %}
|
||||||
|
{{ None|placeholder }}
|
||||||
|
{% endif %}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<th scope="row">Name</th>
|
<th scope="row">Name</th>
|
||||||
<td>{{ object.name }}</td>
|
<td>{{ object.name }}</td>
|
||||||
|
Loading…
Reference in New Issue
Block a user