views.py 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186
  1. from dcim.models import Interface
  2. from netbox.views import generic
  3. from utilities.utils import count_related
  4. from utilities.views import register_model_view
  5. from . import filtersets, forms, tables
  6. from .models import *
  7. #
  8. # Wireless LAN groups
  9. #
  10. class WirelessLANGroupListView(generic.ObjectListView):
  11. queryset = WirelessLANGroup.objects.add_related_count(
  12. WirelessLANGroup.objects.all(),
  13. WirelessLAN,
  14. 'group',
  15. 'wirelesslan_count',
  16. cumulative=True
  17. ).prefetch_related('tags')
  18. filterset = filtersets.WirelessLANGroupFilterSet
  19. filterset_form = forms.WirelessLANGroupFilterForm
  20. table = tables.WirelessLANGroupTable
  21. @register_model_view(WirelessLANGroup)
  22. class WirelessLANGroupView(generic.ObjectView):
  23. queryset = WirelessLANGroup.objects.all()
  24. def get_extra_context(self, request, instance):
  25. wirelesslans = WirelessLAN.objects.restrict(request.user, 'view').filter(
  26. group=instance
  27. )
  28. wirelesslans_table = tables.WirelessLANTable(wirelesslans, user=request.user, exclude=('group',))
  29. wirelesslans_table.configure(request)
  30. return {
  31. 'wirelesslans_table': wirelesslans_table,
  32. }
  33. @register_model_view(WirelessLANGroup, 'edit')
  34. class WirelessLANGroupEditView(generic.ObjectEditView):
  35. queryset = WirelessLANGroup.objects.all()
  36. form = forms.WirelessLANGroupForm
  37. @register_model_view(WirelessLANGroup, 'delete')
  38. class WirelessLANGroupDeleteView(generic.ObjectDeleteView):
  39. queryset = WirelessLANGroup.objects.all()
  40. class WirelessLANGroupBulkImportView(generic.BulkImportView):
  41. queryset = WirelessLANGroup.objects.all()
  42. model_form = forms.WirelessLANGroupImportForm
  43. table = tables.WirelessLANGroupTable
  44. class WirelessLANGroupBulkEditView(generic.BulkEditView):
  45. queryset = WirelessLANGroup.objects.add_related_count(
  46. WirelessLANGroup.objects.all(),
  47. WirelessLAN,
  48. 'group',
  49. 'wirelesslan_count',
  50. cumulative=True
  51. )
  52. filterset = filtersets.WirelessLANGroupFilterSet
  53. table = tables.WirelessLANGroupTable
  54. form = forms.WirelessLANGroupBulkEditForm
  55. class WirelessLANGroupBulkDeleteView(generic.BulkDeleteView):
  56. queryset = WirelessLANGroup.objects.add_related_count(
  57. WirelessLANGroup.objects.all(),
  58. WirelessLAN,
  59. 'group',
  60. 'wirelesslan_count',
  61. cumulative=True
  62. )
  63. filterset = filtersets.WirelessLANGroupFilterSet
  64. table = tables.WirelessLANGroupTable
  65. #
  66. # Wireless LANs
  67. #
  68. class WirelessLANListView(generic.ObjectListView):
  69. queryset = WirelessLAN.objects.annotate(
  70. interface_count=count_related(Interface, 'wireless_lans')
  71. )
  72. filterset = filtersets.WirelessLANFilterSet
  73. filterset_form = forms.WirelessLANFilterForm
  74. table = tables.WirelessLANTable
  75. @register_model_view(WirelessLAN)
  76. class WirelessLANView(generic.ObjectView):
  77. queryset = WirelessLAN.objects.all()
  78. def get_extra_context(self, request, instance):
  79. attached_interfaces = Interface.objects.restrict(request.user, 'view').filter(
  80. wireless_lans=instance
  81. )
  82. interfaces_table = tables.WirelessLANInterfacesTable(attached_interfaces, user=request.user)
  83. interfaces_table.configure(request)
  84. return {
  85. 'interfaces_table': interfaces_table,
  86. }
  87. @register_model_view(WirelessLAN, 'edit')
  88. class WirelessLANEditView(generic.ObjectEditView):
  89. queryset = WirelessLAN.objects.all()
  90. form = forms.WirelessLANForm
  91. @register_model_view(WirelessLAN, 'delete')
  92. class WirelessLANDeleteView(generic.ObjectDeleteView):
  93. queryset = WirelessLAN.objects.all()
  94. class WirelessLANBulkImportView(generic.BulkImportView):
  95. queryset = WirelessLAN.objects.all()
  96. model_form = forms.WirelessLANImportForm
  97. table = tables.WirelessLANTable
  98. class WirelessLANBulkEditView(generic.BulkEditView):
  99. queryset = WirelessLAN.objects.all()
  100. filterset = filtersets.WirelessLANFilterSet
  101. table = tables.WirelessLANTable
  102. form = forms.WirelessLANBulkEditForm
  103. class WirelessLANBulkDeleteView(generic.BulkDeleteView):
  104. queryset = WirelessLAN.objects.all()
  105. filterset = filtersets.WirelessLANFilterSet
  106. table = tables.WirelessLANTable
  107. #
  108. # Wireless Links
  109. #
  110. class WirelessLinkListView(generic.ObjectListView):
  111. queryset = WirelessLink.objects.all()
  112. filterset = filtersets.WirelessLinkFilterSet
  113. filterset_form = forms.WirelessLinkFilterForm
  114. table = tables.WirelessLinkTable
  115. @register_model_view(WirelessLink)
  116. class WirelessLinkView(generic.ObjectView):
  117. queryset = WirelessLink.objects.all()
  118. @register_model_view(WirelessLink, 'edit')
  119. class WirelessLinkEditView(generic.ObjectEditView):
  120. queryset = WirelessLink.objects.all()
  121. form = forms.WirelessLinkForm
  122. @register_model_view(WirelessLink, 'delete')
  123. class WirelessLinkDeleteView(generic.ObjectDeleteView):
  124. queryset = WirelessLink.objects.all()
  125. class WirelessLinkBulkImportView(generic.BulkImportView):
  126. queryset = WirelessLink.objects.all()
  127. model_form = forms.WirelessLinkImportForm
  128. table = tables.WirelessLinkTable
  129. class WirelessLinkBulkEditView(generic.BulkEditView):
  130. queryset = WirelessLink.objects.all()
  131. filterset = filtersets.WirelessLinkFilterSet
  132. table = tables.WirelessLinkTable
  133. form = forms.WirelessLinkBulkEditForm
  134. class WirelessLinkBulkDeleteView(generic.BulkDeleteView):
  135. queryset = WirelessLink.objects.all()
  136. filterset = filtersets.WirelessLinkFilterSet
  137. table = tables.WirelessLinkTable