views.py 7.0 KB

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