admin.py 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  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']
  8. @admin.register(Role)
  9. class RoleAdmin(admin.ModelAdmin):
  10. prepopulated_fields = {
  11. 'slug': ['name'],
  12. }
  13. list_display = ['name', 'slug', 'weight']
  14. @admin.register(RIR)
  15. class RIRAdmin(admin.ModelAdmin):
  16. prepopulated_fields = {
  17. 'slug': ['name'],
  18. }
  19. list_display = ['name', 'slug']
  20. @admin.register(Aggregate)
  21. class AggregateAdmin(admin.ModelAdmin):
  22. list_display = ['prefix', 'rir', 'date_added']
  23. list_filter = ['family', 'rir']
  24. search_fields = ['prefix']
  25. @admin.register(Prefix)
  26. class PrefixAdmin(admin.ModelAdmin):
  27. list_display = ['prefix', 'vrf', 'site', 'status', 'role', 'vlan']
  28. list_filter = ['family', 'site', 'status', 'role']
  29. search_fields = ['prefix']
  30. def get_queryset(self, request):
  31. qs = super(PrefixAdmin, self).get_queryset(request)
  32. return qs.select_related('vrf', 'site', 'role', 'vlan')
  33. @admin.register(IPAddress)
  34. class IPAddressAdmin(admin.ModelAdmin):
  35. list_display = ['address', 'vrf', 'nat_inside']
  36. list_filter = ['family']
  37. fields = ['address', 'vrf', 'device', 'interface', 'nat_inside']
  38. readonly_fields = ['interface', 'device', 'nat_inside']
  39. search_fields = ['address']
  40. def get_queryset(self, request):
  41. qs = super(IPAddressAdmin, self).get_queryset(request)
  42. return qs.select_related('vrf', 'nat_inside')
  43. @admin.register(VLANGroup)
  44. class VLANGroupAdmin(admin.ModelAdmin):
  45. list_display = ['name', 'site', 'slug']
  46. prepopulated_fields = {
  47. 'slug': ['name'],
  48. }
  49. @admin.register(VLAN)
  50. class VLANAdmin(admin.ModelAdmin):
  51. list_display = ['site', 'vid', 'name', 'status', 'role']
  52. list_filter = ['site', 'status', 'role']
  53. search_fields = ['vid', 'name']
  54. def get_queryset(self, request):
  55. qs = super(VLANAdmin, self).get_queryset(request)
  56. return qs.select_related('site', 'role')