mirror of
https://github.com/netbox-community/netbox.git
synced 2025-07-24 17:38:37 -06:00
Fixes #734: Corrected display of device type when editing a device
This commit is contained in:
parent
3a6d7a1f7f
commit
d5095362d7
@ -183,10 +183,14 @@ class DeviceAdmin(admin.ModelAdmin):
|
|||||||
DeviceBayAdmin,
|
DeviceBayAdmin,
|
||||||
ModuleAdmin,
|
ModuleAdmin,
|
||||||
]
|
]
|
||||||
list_display = ['display_name', 'device_type', 'device_role', 'primary_ip', 'rack', 'position', 'asset_tag',
|
list_display = ['display_name', 'device_type_full_name', 'device_role', 'primary_ip', 'rack', 'position', 'asset_tag',
|
||||||
'serial']
|
'serial']
|
||||||
list_filter = ['device_role']
|
list_filter = ['device_role']
|
||||||
|
|
||||||
def get_queryset(self, request):
|
def get_queryset(self, request):
|
||||||
qs = super(DeviceAdmin, self).get_queryset(request)
|
qs = super(DeviceAdmin, self).get_queryset(request)
|
||||||
return qs.select_related('device_type__manufacturer', 'device_role', 'primary_ip4', 'primary_ip6', 'rack')
|
return qs.select_related('device_type__manufacturer', 'device_role', 'primary_ip4', 'primary_ip6', 'rack')
|
||||||
|
|
||||||
|
def device_type_full_name(self, obj):
|
||||||
|
return obj.device_type.full_name
|
||||||
|
device_type_full_name.short_description = 'Device type'
|
||||||
|
@ -561,7 +561,7 @@ class DeviceType(models.Model):
|
|||||||
]
|
]
|
||||||
|
|
||||||
def __unicode__(self):
|
def __unicode__(self):
|
||||||
return u'{} {}'.format(self.manufacturer, self.model)
|
return self.model
|
||||||
|
|
||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
super(DeviceType, self).__init__(*args, **kwargs)
|
super(DeviceType, self).__init__(*args, **kwargs)
|
||||||
@ -617,6 +617,10 @@ class DeviceType(models.Model):
|
|||||||
'u_height': "Child device types must be 0U."
|
'u_height': "Child device types must be 0U."
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@property
|
||||||
|
def full_name(self):
|
||||||
|
return u'{} {}'.format(self.manufacturer.name, self.model)
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def is_parent_device(self):
|
def is_parent_device(self):
|
||||||
return bool(self.subdevice_role)
|
return bool(self.subdevice_role)
|
||||||
|
@ -294,7 +294,8 @@ class PlatformTable(BaseTable):
|
|||||||
name = tables.LinkColumn(verbose_name='Name')
|
name = tables.LinkColumn(verbose_name='Name')
|
||||||
device_count = tables.Column(verbose_name='Devices')
|
device_count = tables.Column(verbose_name='Devices')
|
||||||
slug = tables.Column(verbose_name='Slug')
|
slug = tables.Column(verbose_name='Slug')
|
||||||
actions = tables.TemplateColumn(template_code=PLATFORM_ACTIONS, attrs={'td': {'class': 'text-right'}}, verbose_name='')
|
actions = tables.TemplateColumn(template_code=PLATFORM_ACTIONS, attrs={'td': {'class': 'text-right'}},
|
||||||
|
verbose_name='')
|
||||||
|
|
||||||
class Meta(BaseTable.Meta):
|
class Meta(BaseTable.Meta):
|
||||||
model = Platform
|
model = Platform
|
||||||
@ -313,7 +314,8 @@ class DeviceTable(BaseTable):
|
|||||||
site = tables.Column(accessor=Accessor('rack.site'), verbose_name='Site')
|
site = tables.Column(accessor=Accessor('rack.site'), verbose_name='Site')
|
||||||
rack = tables.LinkColumn('dcim:rack', args=[Accessor('rack.pk')], verbose_name='Rack')
|
rack = tables.LinkColumn('dcim:rack', args=[Accessor('rack.pk')], verbose_name='Rack')
|
||||||
device_role = tables.TemplateColumn(DEVICE_ROLE, verbose_name='Role')
|
device_role = tables.TemplateColumn(DEVICE_ROLE, verbose_name='Role')
|
||||||
device_type = tables.Column(verbose_name='Type')
|
device_type = tables.LinkColumn('dcim:devicetype', args=[Accessor('device_type.pk')], verbose_name='Type',
|
||||||
|
text=lambda record: record.device_type.full_name)
|
||||||
primary_ip = tables.TemplateColumn(orderable=False, verbose_name='IP Address',
|
primary_ip = tables.TemplateColumn(orderable=False, verbose_name='IP Address',
|
||||||
template_code="{{ record.primary_ip.address.ip }}")
|
template_code="{{ record.primary_ip.address.ip }}")
|
||||||
|
|
||||||
|
@ -56,7 +56,7 @@
|
|||||||
<tr>
|
<tr>
|
||||||
<td>Device Type</td>
|
<td>Device Type</td>
|
||||||
<td>
|
<td>
|
||||||
<span><a href="{% url 'dcim:devicetype' pk=device.device_type.pk %}">{{ device.device_type }}</a> ({{ device.device_type.u_height }}U)</span>
|
<span><a href="{% url 'dcim:devicetype' pk=device.device_type.pk %}">{{ device.device_type.full_name }}</a> ({{ device.device_type.u_height }}U)</span>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
@ -293,7 +293,7 @@
|
|||||||
<td>
|
<td>
|
||||||
<a href="{% url 'dcim:rack' pk=rd.rack.pk %}">Rack {{ rd.rack }}</a>
|
<a href="{% url 'dcim:rack' pk=rd.rack.pk %}">Rack {{ rd.rack }}</a>
|
||||||
</td>
|
</td>
|
||||||
<td>{{ rd.device_type }}</td>
|
<td>{{ rd.device_type.full_name }}</td>
|
||||||
</tr>
|
</tr>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</table>
|
</table>
|
||||||
|
@ -24,7 +24,7 @@
|
|||||||
{% for device in selected_devices %}
|
{% for device in selected_devices %}
|
||||||
<tr>
|
<tr>
|
||||||
<td><a href="{% url 'dcim:device' pk=device.pk %}">{{ device }}</a></td>
|
<td><a href="{% url 'dcim:device' pk=device.pk %}">{{ device }}</a></td>
|
||||||
<td>{{ device.device_type }}</td>
|
<td>{{ device.device_type.full_name }}</td>
|
||||||
<td>{{ device.device_role }}</td>
|
<td>{{ device.device_role }}</td>
|
||||||
</tr>
|
</tr>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
@ -14,7 +14,7 @@
|
|||||||
{% for device in selected_objects %}
|
{% for device in selected_objects %}
|
||||||
<tr>
|
<tr>
|
||||||
<td><a href="{% url 'dcim:device' pk=device.pk %}">{{ device }}</a></td>
|
<td><a href="{% url 'dcim:device' pk=device.pk %}">{{ device }}</a></td>
|
||||||
<td>{{ device.device_type }}</td>
|
<td>{{ device.device_type.full_name }}</td>
|
||||||
<td>{{ device.device_role }}</td>
|
<td>{{ device.device_role }}</td>
|
||||||
<td>{{ device.tenant }}</td>
|
<td>{{ device.tenant }}</td>
|
||||||
<td>{{ device.serial }}</td>
|
<td>{{ device.serial }}</td>
|
||||||
|
@ -13,7 +13,7 @@
|
|||||||
<table class="table table-hover panel-body">
|
<table class="table table-hover panel-body">
|
||||||
<tr>
|
<tr>
|
||||||
<td>Model</td>
|
<td>Model</td>
|
||||||
<td>{{ device.device_type }}</td>
|
<td>{{ device.device_type.full_name }}</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>Serial Number</td>
|
<td>Serial Number</td>
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
{% load helpers %}
|
{% load helpers %}
|
||||||
{% load render_table from django_tables2 %}
|
{% load render_table from django_tables2 %}
|
||||||
|
|
||||||
{% block title %}{{ devicetype }}{% endblock %}
|
{% block title %}{{ devicetype.manufacturer }} {{ devicetype.model }}{% endblock %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
<div class="row">
|
<div class="row">
|
||||||
@ -32,7 +32,7 @@
|
|||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
<h1>{{ devicetype }}</h1>
|
<h1>{{ devicetype.manufacturer }} {{ devicetype.model }}</h1>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<div class="panel panel-default">
|
<div class="panel panel-default">
|
||||||
|
@ -12,7 +12,7 @@
|
|||||||
<a href="{% url 'dcim:device' pk=devicebay.installed_device.pk %}">{{ devicebay.installed_device }}</a>
|
<a href="{% url 'dcim:device' pk=devicebay.installed_device.pk %}">{{ devicebay.installed_device }}</a>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<span>{{ devicebay.installed_device.device_type }}</span>
|
<span>{{ devicebay.installed_device.device_type.full_name }}</span>
|
||||||
</td>
|
</td>
|
||||||
{% else %}
|
{% else %}
|
||||||
<td colspan="2">
|
<td colspan="2">
|
||||||
|
@ -24,7 +24,7 @@
|
|||||||
<li class="occupied h{{ u.device.device_type.u_height }}u"{% ifequal u.device.face face_id %} style="background-color: #{{ u.device.device_role.color }}"{% endifequal %}>
|
<li class="occupied h{{ u.device.device_type.u_height }}u"{% ifequal u.device.face face_id %} style="background-color: #{{ u.device.device_role.color }}"{% endifequal %}>
|
||||||
{% ifequal u.device.face face_id %}
|
{% ifequal u.device.face face_id %}
|
||||||
<a href="{% url 'dcim:device' pk=u.device.pk %}" data-toggle="popover" data-trigger="hover" data-container="body" data-html="true"
|
<a href="{% url 'dcim:device' pk=u.device.pk %}" data-toggle="popover" data-trigger="hover" data-container="body" data-html="true"
|
||||||
data-content="{{ u.device.device_role }}<br />{{ u.device.device_type }} ({{ u.device.device_type.u_height }}U)">
|
data-content="{{ u.device.device_role }}<br />{{ u.device.device_type.full_name }} ({{ u.device.device_type.u_height }}U)">
|
||||||
{{ u.device.name|default:u.device.device_role }}
|
{{ u.device.name|default:u.device.device_role }}
|
||||||
{% if u.device.devicebay_count %}
|
{% if u.device.devicebay_count %}
|
||||||
({{ u.device.get_children.count }}/{{ u.device.devicebay_count }})
|
({{ u.device.get_children.count }}/{{ u.device.devicebay_count }})
|
||||||
|
@ -153,8 +153,14 @@
|
|||||||
<a href="{% url 'dcim:device' pk=device.pk %}">{{ device.name }}</a>
|
<a href="{% url 'dcim:device' pk=device.pk %}">{{ device.name }}</a>
|
||||||
</td>
|
</td>
|
||||||
<td>{{ device.device_role }}</td>
|
<td>{{ device.device_role }}</td>
|
||||||
<td>{{ device.device_type }}</td>
|
<td>{{ device.device_type.full_name }}</td>
|
||||||
<td>{% if device.parent_bay %}<a href="{{ device.parent_bay.device.get_absolute_url }}">{{ device.parent_bay }}</a>{% endif %}</td>
|
<td>
|
||||||
|
{% if device.parent_bay %}
|
||||||
|
<a href="{{ device.parent_bay.device.get_absolute_url }}">{{ device.parent_bay }}</a>
|
||||||
|
{% else %}
|
||||||
|
<span class="text-muted">N/A</span>
|
||||||
|
{% endif %}
|
||||||
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</table>
|
</table>
|
||||||
|
Loading…
Reference in New Issue
Block a user