mirror of
https://github.com/netbox-community/netbox.git
synced 2024-05-10 07:54:54 +00:00
162 lines
3.9 KiB
Python
162 lines
3.9 KiB
Python
|
from django.contrib import admin
|
||
|
from django.db.models import Count
|
||
|
|
||
|
from .models import *
|
||
|
|
||
|
|
||
|
@admin.register(Site)
|
||
|
class SiteAdmin(admin.ModelAdmin):
|
||
|
list_display = ['name', 'slug', 'facility', 'asn']
|
||
|
prepopulated_fields = {
|
||
|
'slug': ['name'],
|
||
|
}
|
||
|
|
||
|
|
||
|
@admin.register(RackGroup)
|
||
|
class RackGroupAdmin(admin.ModelAdmin):
|
||
|
list_display = ['name', 'slug', 'site']
|
||
|
prepopulated_fields = {
|
||
|
'slug': ['name'],
|
||
|
}
|
||
|
|
||
|
|
||
|
@admin.register(Rack)
|
||
|
class RackAdmin(admin.ModelAdmin):
|
||
|
list_display = ['name', 'facility_id', 'site', 'u_height']
|
||
|
|
||
|
|
||
|
#
|
||
|
# Device types
|
||
|
#
|
||
|
|
||
|
@admin.register(Manufacturer)
|
||
|
class ManufacturerAdmin(admin.ModelAdmin):
|
||
|
prepopulated_fields = {
|
||
|
'slug': ['name'],
|
||
|
}
|
||
|
list_display = ['name', 'slug']
|
||
|
|
||
|
|
||
|
class ConsolePortTemplateAdmin(admin.TabularInline):
|
||
|
model = ConsolePortTemplate
|
||
|
|
||
|
|
||
|
class ConsoleServerPortTemplateAdmin(admin.TabularInline):
|
||
|
model = ConsoleServerPortTemplate
|
||
|
|
||
|
|
||
|
class PowerPortTemplateAdmin(admin.TabularInline):
|
||
|
model = PowerPortTemplate
|
||
|
|
||
|
|
||
|
class PowerOutletTemplateAdmin(admin.TabularInline):
|
||
|
model = PowerOutletTemplate
|
||
|
|
||
|
|
||
|
class InterfaceTemplateAdmin(admin.TabularInline):
|
||
|
model = InterfaceTemplate
|
||
|
|
||
|
|
||
|
@admin.register(DeviceType)
|
||
|
class DeviceTypeAdmin(admin.ModelAdmin):
|
||
|
prepopulated_fields = {
|
||
|
'slug': ['model'],
|
||
|
}
|
||
|
inlines = [
|
||
|
ConsolePortTemplateAdmin,
|
||
|
ConsoleServerPortTemplateAdmin,
|
||
|
PowerPortTemplateAdmin,
|
||
|
PowerOutletTemplateAdmin,
|
||
|
InterfaceTemplateAdmin,
|
||
|
]
|
||
|
list_display = ['model', 'manufacturer', 'slug', 'u_height', 'console_ports', 'console_server_ports', 'power_ports',
|
||
|
'power_outlets', 'interfaces']
|
||
|
list_filter = ['manufacturer']
|
||
|
|
||
|
def get_queryset(self, request):
|
||
|
return DeviceType.objects.annotate(
|
||
|
console_port_count=Count('console_port_templates', distinct=True),
|
||
|
cs_port_count=Count('cs_port_templates', distinct=True),
|
||
|
power_port_count=Count('power_port_templates', distinct=True),
|
||
|
power_outlet_count=Count('power_outlet_templates', distinct=True),
|
||
|
interface_count=Count('interface_templates', distinct=True),
|
||
|
)
|
||
|
|
||
|
def console_ports(self, instance):
|
||
|
return instance.console_port_count
|
||
|
|
||
|
def console_server_ports(self, instance):
|
||
|
return instance.cs_port_count
|
||
|
|
||
|
def power_ports(self, instance):
|
||
|
return instance.power_port_count
|
||
|
|
||
|
def power_outlets(self, instance):
|
||
|
return instance.power_outlet_count
|
||
|
|
||
|
def interfaces(self, instance):
|
||
|
return instance.interface_count
|
||
|
|
||
|
|
||
|
#
|
||
|
# Devices
|
||
|
#
|
||
|
|
||
|
@admin.register(DeviceRole)
|
||
|
class DeviceRoleAdmin(admin.ModelAdmin):
|
||
|
prepopulated_fields = {
|
||
|
'slug': ['name'],
|
||
|
}
|
||
|
list_display = ['name', 'slug', 'color']
|
||
|
|
||
|
|
||
|
@admin.register(Platform)
|
||
|
class PlatformAdmin(admin.ModelAdmin):
|
||
|
prepopulated_fields = {
|
||
|
'slug': ['name'],
|
||
|
}
|
||
|
list_display = ['name', 'rpc_client']
|
||
|
|
||
|
|
||
|
class ConsolePortAdmin(admin.TabularInline):
|
||
|
model = ConsolePort
|
||
|
readonly_fields = ['cs_port']
|
||
|
|
||
|
|
||
|
class ConsoleServerPortAdmin(admin.TabularInline):
|
||
|
model = ConsoleServerPort
|
||
|
|
||
|
|
||
|
class PowerPortAdmin(admin.TabularInline):
|
||
|
model = PowerPort
|
||
|
readonly_fields = ['power_outlet']
|
||
|
|
||
|
|
||
|
class PowerOutletAdmin(admin.TabularInline):
|
||
|
model = PowerOutlet
|
||
|
|
||
|
|
||
|
class InterfaceAdmin(admin.TabularInline):
|
||
|
model = Interface
|
||
|
|
||
|
|
||
|
class ModuleAdmin(admin.TabularInline):
|
||
|
model = Module
|
||
|
|
||
|
@admin.register(Device)
|
||
|
class DeviceAdmin(admin.ModelAdmin):
|
||
|
inlines = [
|
||
|
ConsolePortAdmin,
|
||
|
ConsoleServerPortAdmin,
|
||
|
PowerPortAdmin,
|
||
|
PowerOutletAdmin,
|
||
|
InterfaceAdmin,
|
||
|
ModuleAdmin,
|
||
|
]
|
||
|
list_display = ['display_name', 'device_type', 'device_role', 'primary_ip', 'rack', 'position', 'serial']
|
||
|
list_filter = ['device_role']
|
||
|
|
||
|
def get_queryset(self, request):
|
||
|
qs = super(DeviceAdmin, self).get_queryset(request)
|
||
|
return qs.select_related('device_type__manufacturer', 'device_role', 'primary_ip', 'rack')
|