Files
mdb/mdb/admin.py
T

118 lines
3.8 KiB
Python

from mdb.models import *
from django.contrib import admin
class Ip6AddressInline(admin.TabularInline):
model = Ip6Address
extra = 0
class InterfaceInline(admin.TabularInline):
inlines = [Ip6AddressInline]
model = Interface
extra = 0
def get_queryset(self, request):
return super(InterfaceInline, self).get_queryset(request).select_related()
class HostAdmin(admin.ModelAdmin):
ordering = ('hostname',)
inlines = [InterfaceInline]
list_display = ['hostname', 'owner', 'host_type', 'location', 'mac_addresses', 'ip_addresses', 'in_domain',
'pxe_installable', 'ipv6_enabled']
list_filter = ['host_type', 'owner', 'location', 'pxe_installable']
readonly_fields = ['kerberos_principal_name', 'kerberos_principal_created_date',
'kerberos_principal_created']
search_fields = ['hostname', 'location', 'interface__macaddr', 'interface__ip4address__address']
fieldsets = (
('Owner Information', {
'fields': ('owner', 'location', 'description')
}),
('Hardware and Software Information', {
'fields': (('hostname', 'host_type'), ('pxe_key', 'pxe_installable'), ('brand', 'model'), 'serial_number', ('operating_system', 'virtual'))
}),
# FIXME: Not in use
# ('Domain and Kerberos Information', {
# 'description': 'If this host is a member of the LDAP domain, you need to tick the request kerberos principal checkbox. A principal will then be created for the host.',
# 'classes': ['collapse'],
# 'fields': ('request_kerberos_principal', 'kerberos_principal_created',
# ('kerberos_principal_name', 'kerberos_principal_created_date'))
# }),
)
def get_queryset(self, request):
return super(HostAdmin, self).get_queryset(request).select_related()
class Ip4AddressInline(admin.TabularInline):
model = Ip4Address
extra = 0
readonly_fields = ['address', 'assigned_to_host']
class DhcpOptionInline(admin.TabularInline):
model = DhcpOption
extra = 0
class DhcpCustomFieldInline(admin.TabularInline):
model = DhcpCustomField
extra = 0
class SubnetAdmin(admin.ModelAdmin):
list_display = ['name', 'network', 'netmask', 'num_addresses', 'broadcast_address', 'first_address', 'last_address']
inlines = [DhcpOptionInline, DhcpCustomFieldInline, Ip4AddressInline]
def get_queryset(self, request):
# TODO: optimize
return super(SubnetAdmin, self).get_queryset(request)
class DomainSrvRecordInline(admin.TabularInline):
model = DomainSrvRecord
extra = 0
class DomainTxtRecordInline(admin.TabularInline):
model = DomainTxtRecord
extra = 0
class DomainCnameRecordInline(admin.TabularInline):
model = DomainCnameRecord
extra = 0
class DomainARecordInline(admin.TabularInline):
model = DomainARecord
extra = 0
class DomainAdmin(admin.ModelAdmin):
inlines = [DomainSrvRecordInline, DomainTxtRecordInline, DomainARecordInline, DomainCnameRecordInline]
list_display = ['domain_name', 'domain_soa', 'domain_admin', 'num_records', 'domain_ipaddr']
search_fields = ['domain_name']
class HostTypeAdmin(admin.ModelAdmin):
list_display = ['host_type', 'description', 'num_members']
class OperatingSystemAdmin(admin.ModelAdmin):
list_display = ['name', 'version', 'arch']
admin.site.register(Domain, DomainAdmin)
admin.site.register(Host, HostAdmin)
admin.site.register(Ip4Subnet, SubnetAdmin)
admin.site.register(Ip6Subnet)
admin.site.register(Ip6Address)
admin.site.register(Nameserver)
admin.site.register(MailExchange)
admin.site.register(OperatingSystem, OperatingSystemAdmin)
admin.site.register(HostType, HostTypeAdmin)
admin.site.register(DhcpConfig)
admin.site.register(DhcpOption)