diff --git a/netbox/dcim/ui/panels.py b/netbox/dcim/ui/panels.py index d32431912..106b799a5 100644 --- a/netbox/dcim/ui/panels.py +++ b/netbox/dcim/ui/panels.py @@ -151,6 +151,16 @@ class DeviceTypePanel(panels.ObjectAttributesPanel): rear_image = attrs.ImageAttr('rear_image') +class ModulePanel(panels.ObjectAttributesPanel): + device = attrs.RelatedObjectAttr('device', linkify=True) + device_type = attrs.RelatedObjectAttr('device.device_type', linkify=True, grouped_by='manufacturer') + module_bay = attrs.NestedObjectAttr('module_bay') + status = attrs.ChoiceAttr('status') + description = attrs.TextAttr('description') + serial = attrs.TextAttr('serial', label=_('Serial number'), style='font-monospace', copy_button=True) + asset_tag = attrs.TextAttr('asset_tag', style='font-monospace', copy_button=True) + + class ModuleTypeProfilePanel(panels.ObjectAttributesPanel): name = attrs.TextAttr('name') description = attrs.TextAttr('description') diff --git a/netbox/dcim/views.py b/netbox/dcim/views.py index 9024e7f87..97eeb2caa 100644 --- a/netbox/dcim/views.py +++ b/netbox/dcim/views.py @@ -2824,6 +2824,21 @@ class ModuleListView(generic.ObjectListView): @register_model_view(Module) class ModuleView(GetRelatedModelsMixin, generic.ObjectView): queryset = Module.objects.all() + layout = layout.SimpleLayout( + left_panels=[ + panels.ModulePanel(), + TagsPanel(), + CommentsPanel(), + ], + right_panels=[ + Panel( + title=_('Module Type'), + template_name='dcim/panels/module_type.html', + ), + RelatedObjectsPanel(), + CustomFieldsPanel(), + ], + ) def get_extra_context(self, request, instance): return { diff --git a/netbox/templates/dcim/module.html b/netbox/templates/dcim/module.html index f9aecb3f0..4b013039e 100644 --- a/netbox/templates/dcim/module.html +++ b/netbox/templates/dcim/module.html @@ -47,7 +47,7 @@ {% endif %} {% endblock %} -{% block content %} +{% block contentx %}
diff --git a/netbox/templates/dcim/panels/module_type.html b/netbox/templates/dcim/panels/module_type.html new file mode 100644 index 000000000..7fb90470b --- /dev/null +++ b/netbox/templates/dcim/panels/module_type.html @@ -0,0 +1,27 @@ +{% extends "ui/panels/_base.html" %} +{% load helpers i18n %} + +{% block panel_content %} + + + + + + + + + + {% for k, v in object.module_type.attributes.items %} + + + + + {% endfor %} +
{% trans "Manufacturer" %}{{ object.module_type.manufacturer|linkify }}
{% trans "Model" %}{{ object.module_type|linkify }}
{{ k }} + {% if v is True or v is False %} + {% checkmark v %} + {% else %} + {{ v|placeholder }} + {% endif %} +
+{% endblock panel_content %}