diff --git a/netbox_lifecycle/template_content.py b/netbox_lifecycle/template_content.py index 44837c7..ae48009 100644 --- a/netbox_lifecycle/template_content.py +++ b/netbox_lifecycle/template_content.py @@ -3,28 +3,33 @@ from django.template import Template from netbox.plugins import PluginTemplateExtension -from .models import hardware, contract +from .models import hardware, contract, license class DeviceHardwareInfoExtension(PluginTemplateExtension): def right_page(self): object = self.context.get('object') - support_contract = contract.SupportContractAssignment.objects.filter(device_id=self.context['object'].id).first() + max_items_display = 5 match self.kind: case "device": + licenses = license.LicenseAssignment.objects.filter(device_id=self.context['object'].id)[:max_items_display] + support_contract = contract.SupportContractAssignment.objects.filter(device_id=self.context['object'].id).first() content_type = ContentType.objects.get(app_label="dcim", model="devicetype") lifecycle_info = hardware.HardwareLifecycle.objects.filter(assigned_object_id=self.context['object'].device_type_id, assigned_object_type_id=content_type.id).first() case "module": + licenses = None content_type = ContentType.objects.get(app_label="dcim", model="moduletype") lifecycle_info = hardware.HardwareLifecycle.objects.filter(assigned_object_id=self.context['object'].module_type_id, assigned_object_type_id=content_type.id).first() case "devicetype" | "moduletype": + licenses = None content_type = ContentType.objects.get(app_label="dcim", model=self.kind) lifecycle_info = hardware.HardwareLifecycle.objects.filter(assigned_object_id=self.context['object'].id, assigned_object_type_id=content_type.id).first() - context = {'support_contract': support_contract, 'lifecycle_info': lifecycle_info} - return self.render('netbox_lifecycle/inc/support_contract_info.html', extra_context=context) + context = {'max_items_display': max_items_display, 'licenses': licenses, 'support_contract': support_contract, + 'lifecycle_info': lifecycle_info} + return self.render('netbox_lifecycle/inc/licenses_info.html', extra_context=context) class TypeInfoExtension(PluginTemplateExtension): diff --git a/netbox_lifecycle/templates/netbox_lifecycle/inc/licenses_info.html b/netbox_lifecycle/templates/netbox_lifecycle/inc/licenses_info.html new file mode 100644 index 0000000..a1f57ca --- /dev/null +++ b/netbox_lifecycle/templates/netbox_lifecycle/inc/licenses_info.html @@ -0,0 +1,77 @@ + +{% load filters %} +{% load helpers %} +{# renders panel on object (device) with licenses assigned to it #} + +
+
+ Licenses + +
+ + + + + + + + + + + + {% if licenses %} + + {% for license in licenses %} + + + + + + + + + {% endfor %} + {% if licenses|length == max_items_display %} + + + + {% endif %} + + {% else %} + + + + + + {% endif %} +
VendorManufacturerNameQuantityDescription
{{ license.vendor|linkify|placeholder }}{{ license.license.manufacturer|linkify|placeholder }}{{ license.license|linkify|placeholder }}{{ license.quantity|placeholder }}{{ license.description|placeholder }} + + + + + + Toggle Dropdown + + + +
+ Max Licenses display reached: Show all Licenses +
— No License Assigned —
+
+ +{% include "netbox_lifecycle/inc/support_contract_info.html" %}