|
|
@@ -3,6 +3,19 @@ from django.utils.translation import gettext_lazy as _
|
|
|
from netbox.ui import attrs, components
|
|
|
|
|
|
|
|
|
+class SitePanel(components.ObjectPanel):
|
|
|
+ region = attrs.NestedObjectAttr('region', label=_('Region'), linkify=True)
|
|
|
+ group = attrs.NestedObjectAttr('group', label=_('Group'), linkify=True)
|
|
|
+ status = attrs.ChoiceAttr('status', label=_('Status'))
|
|
|
+ tenant = attrs.ObjectAttr('tenant', label=_('Tenant'), linkify=True, grouped_by='group')
|
|
|
+ facility = attrs.TextAttr('facility', label=_('Facility'))
|
|
|
+ description = attrs.TextAttr('description', label=_('Description'))
|
|
|
+ timezone = attrs.TimezoneAttr('time_zone', label=_('Timezone'))
|
|
|
+ physical_address = attrs.AddressAttr('physical_address', label=_('Physical address'), map_url=True)
|
|
|
+ shipping_address = attrs.AddressAttr('shipping_address', label=_('Shipping address'), map_url=True)
|
|
|
+ gps_coordinates = attrs.GPSCoordinatesAttr()
|
|
|
+
|
|
|
+
|
|
|
class LocationPanel(components.NestedGroupObjectPanel):
|
|
|
site = attrs.ObjectAttr('site', label=_('Site'), linkify=True, grouped_by='group')
|
|
|
status = attrs.ChoiceAttr('status', label=_('Status'))
|
|
|
@@ -10,6 +23,23 @@ class LocationPanel(components.NestedGroupObjectPanel):
|
|
|
facility = attrs.TextAttr('facility', label=_('Facility'))
|
|
|
|
|
|
|
|
|
+class RackPanel(components.ObjectPanel):
|
|
|
+ region = attrs.NestedObjectAttr('site.region', label=_('Region'), linkify=True)
|
|
|
+ site = attrs.ObjectAttr('site', label=_('Site'), linkify=True, grouped_by='group')
|
|
|
+ location = attrs.NestedObjectAttr('location', label=_('Location'), linkify=True)
|
|
|
+ facility = attrs.TextAttr('facility', label=_('Facility'))
|
|
|
+ tenant = attrs.ObjectAttr('tenant', label=_('Tenant'), linkify=True, grouped_by='group')
|
|
|
+ status = attrs.ChoiceAttr('status', label=_('Status'))
|
|
|
+ rack_type = attrs.ObjectAttr('rack_type', label=_('Rack type'), linkify=True, grouped_by='manufacturer')
|
|
|
+ role = attrs.ObjectAttr('role', label=_('Role'), linkify=True)
|
|
|
+ description = attrs.TextAttr('description', label=_('Description'))
|
|
|
+ serial = attrs.TextAttr('serial', label=_('Serial number'), style='font-monospace', copy_button=True)
|
|
|
+ asset_tag = attrs.TextAttr('asset_tag', label=_('Asset tag'), style='font-monospace', copy_button=True)
|
|
|
+ airflow = attrs.ChoiceAttr('airflow', label=_('Airflow'))
|
|
|
+ space_utilization = attrs.UtilizationAttr('get_utilization', label=_('Space utilization'))
|
|
|
+ power_utilization = attrs.UtilizationAttr('get_power_utilization', label=_('Power utilization'))
|
|
|
+
|
|
|
+
|
|
|
class DevicePanel(components.ObjectPanel):
|
|
|
region = attrs.NestedObjectAttr('site.region', label=_('Region'), linkify=True)
|
|
|
site = attrs.ObjectAttr('site', label=_('Site'), linkify=True, grouped_by='group')
|
|
|
@@ -50,16 +80,3 @@ class DeviceManagementPanel(components.ObjectPanel):
|
|
|
label=_('Out-of-band IP'),
|
|
|
template_name='dcim/device/attrs/ipaddress.html',
|
|
|
)
|
|
|
-
|
|
|
-
|
|
|
-class SitePanel(components.ObjectPanel):
|
|
|
- region = attrs.NestedObjectAttr('region', label=_('Region'), linkify=True)
|
|
|
- group = attrs.NestedObjectAttr('group', label=_('Group'), linkify=True)
|
|
|
- status = attrs.ChoiceAttr('status', label=_('Status'))
|
|
|
- tenant = attrs.ObjectAttr('tenant', label=_('Tenant'), linkify=True, grouped_by='group')
|
|
|
- facility = attrs.TextAttr('facility', label=_('Facility'))
|
|
|
- description = attrs.TextAttr('description', label=_('Description'))
|
|
|
- timezone = attrs.TimezoneAttr('time_zone', label=_('Timezone'))
|
|
|
- physical_address = attrs.AddressAttr('physical_address', label=_('Physical address'), map_url=True)
|
|
|
- shipping_address = attrs.AddressAttr('shipping_address', label=_('Shipping address'), map_url=True)
|
|
|
- gps_coordinates = attrs.GPSCoordinatesAttr()
|