views.py 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194
  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, '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_delete', path='delete', detail=False)
  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. @register_model_view(WirelessLAN, 'list', path='', detail=False)
  69. class WirelessLANListView(generic.ObjectListView):
  70. queryset = WirelessLAN.objects.annotate(
  71. interface_count=count_related(Interface, 'wireless_lans')
  72. )
  73. filterset = filtersets.WirelessLANFilterSet
  74. filterset_form = forms.WirelessLANFilterForm
  75. table = tables.WirelessLANTable
  76. @register_model_view(WirelessLAN)
  77. class WirelessLANView(generic.ObjectView):
  78. queryset = WirelessLAN.objects.all()
  79. def get_extra_context(self, request, instance):
  80. attached_interfaces = Interface.objects.restrict(request.user, 'view').filter(
  81. wireless_lans=instance
  82. )
  83. interfaces_table = tables.WirelessLANInterfacesTable(attached_interfaces, user=request.user)
  84. interfaces_table.configure(request)
  85. return {
  86. 'interfaces_table': interfaces_table,
  87. }
  88. @register_model_view(WirelessLAN, 'add', detail=False)
  89. @register_model_view(WirelessLAN, 'edit')
  90. class WirelessLANEditView(generic.ObjectEditView):
  91. queryset = WirelessLAN.objects.all()
  92. form = forms.WirelessLANForm
  93. @register_model_view(WirelessLAN, 'delete')
  94. class WirelessLANDeleteView(generic.ObjectDeleteView):
  95. queryset = WirelessLAN.objects.all()
  96. @register_model_view(WirelessLAN, 'import', detail=False)
  97. class WirelessLANBulkImportView(generic.BulkImportView):
  98. queryset = WirelessLAN.objects.all()
  99. model_form = forms.WirelessLANImportForm
  100. @register_model_view(WirelessLAN, 'bulk_edit', path='edit', detail=False)
  101. class WirelessLANBulkEditView(generic.BulkEditView):
  102. queryset = WirelessLAN.objects.all()
  103. filterset = filtersets.WirelessLANFilterSet
  104. table = tables.WirelessLANTable
  105. form = forms.WirelessLANBulkEditForm
  106. @register_model_view(WirelessLAN, 'bulk_delete', path='delete', detail=False)
  107. class WirelessLANBulkDeleteView(generic.BulkDeleteView):
  108. queryset = WirelessLAN.objects.all()
  109. filterset = filtersets.WirelessLANFilterSet
  110. table = tables.WirelessLANTable
  111. #
  112. # Wireless Links
  113. #
  114. @register_model_view(WirelessLink, 'list', path='', detail=False)
  115. class WirelessLinkListView(generic.ObjectListView):
  116. queryset = WirelessLink.objects.all()
  117. filterset = filtersets.WirelessLinkFilterSet
  118. filterset_form = forms.WirelessLinkFilterForm
  119. table = tables.WirelessLinkTable
  120. @register_model_view(WirelessLink)
  121. class WirelessLinkView(generic.ObjectView):
  122. queryset = WirelessLink.objects.all()
  123. @register_model_view(WirelessLink, 'add', detail=False)
  124. @register_model_view(WirelessLink, 'edit')
  125. class WirelessLinkEditView(generic.ObjectEditView):
  126. queryset = WirelessLink.objects.all()
  127. form = forms.WirelessLinkForm
  128. @register_model_view(WirelessLink, 'delete')
  129. class WirelessLinkDeleteView(generic.ObjectDeleteView):
  130. queryset = WirelessLink.objects.all()
  131. @register_model_view(WirelessLink, 'import', detail=False)
  132. class WirelessLinkBulkImportView(generic.BulkImportView):
  133. queryset = WirelessLink.objects.all()
  134. model_form = forms.WirelessLinkImportForm
  135. @register_model_view(WirelessLink, 'bulk_edit', path='edit', detail=False)
  136. class WirelessLinkBulkEditView(generic.BulkEditView):
  137. queryset = WirelessLink.objects.all()
  138. filterset = filtersets.WirelessLinkFilterSet
  139. table = tables.WirelessLinkTable
  140. form = forms.WirelessLinkBulkEditForm
  141. @register_model_view(WirelessLink, 'bulk_delete', path='delete', detail=False)
  142. class WirelessLinkBulkDeleteView(generic.BulkDeleteView):
  143. queryset = WirelessLink.objects.all()
  144. filterset = filtersets.WirelessLinkFilterSet
  145. table = tables.WirelessLinkTable