admin.py 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. from django.contrib import admin
  2. from .models import (
  3. Aggregate, IPAddress, Prefix, RIR, Role, VLAN, VLANGroup, VRF,
  4. )
  5. @admin.register(VRF)
  6. class VRFAdmin(admin.ModelAdmin):
  7. list_display = ['name', 'rd', 'tenant', 'enforce_unique']
  8. list_filter = ['tenant']
  9. def get_queryset(self, request):
  10. qs = super(VRFAdmin, self).get_queryset(request)
  11. return qs.select_related('tenant')
  12. @admin.register(Role)
  13. class RoleAdmin(admin.ModelAdmin):
  14. prepopulated_fields = {
  15. 'slug': ['name'],
  16. }
  17. list_display = ['name', 'slug', 'weight']
  18. @admin.register(RIR)
  19. class RIRAdmin(admin.ModelAdmin):
  20. prepopulated_fields = {
  21. 'slug': ['name'],
  22. }
  23. list_display = ['name', 'slug']
  24. @admin.register(Aggregate)
  25. class AggregateAdmin(admin.ModelAdmin):
  26. list_display = ['prefix', 'rir', 'date_added']
  27. list_filter = ['family', 'rir']
  28. search_fields = ['prefix']
  29. @admin.register(Prefix)
  30. class PrefixAdmin(admin.ModelAdmin):
  31. list_display = ['prefix', 'vrf', 'tenant', 'site', 'status', 'role', 'vlan']
  32. list_filter = ['family', 'site', 'status', 'role']
  33. search_fields = ['prefix']
  34. def get_queryset(self, request):
  35. qs = super(PrefixAdmin, self).get_queryset(request)
  36. return qs.select_related('vrf', 'site', 'role', 'vlan')
  37. @admin.register(IPAddress)
  38. class IPAddressAdmin(admin.ModelAdmin):
  39. list_display = ['address', 'vrf', 'tenant', 'nat_inside']
  40. list_filter = ['family']
  41. fields = ['address', 'vrf', 'device', 'interface', 'nat_inside']
  42. readonly_fields = ['interface', 'device', 'nat_inside']
  43. search_fields = ['address']
  44. def get_queryset(self, request):
  45. qs = super(IPAddressAdmin, self).get_queryset(request)
  46. return qs.select_related('vrf', 'nat_inside')
  47. @admin.register(VLANGroup)
  48. class VLANGroupAdmin(admin.ModelAdmin):
  49. list_display = ['name', 'site', 'slug']
  50. prepopulated_fields = {
  51. 'slug': ['name'],
  52. }
  53. @admin.register(VLAN)
  54. class VLANAdmin(admin.ModelAdmin):
  55. list_display = ['site', 'vid', 'name', 'tenant', 'status', 'role']
  56. list_filter = ['site', 'tenant', 'status', 'role']
  57. search_fields = ['vid', 'name']
  58. def get_queryset(self, request):
  59. qs = super(VLANAdmin, self).get_queryset(request)
  60. return qs.select_related('site', 'tenant', 'role')