views.py 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179
  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. 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(GetRelatedModelsMixin, generic.ObjectView):
  23. queryset = WirelessLANGroup.objects.all()
  24. def get_extra_context(self, request, instance):
  25. groups = instance.get_descendants(include_self=True)
  26. return {
  27. 'related_models': self.get_related_models(request, groups),
  28. }
  29. @register_model_view(WirelessLANGroup, 'edit')
  30. class WirelessLANGroupEditView(generic.ObjectEditView):
  31. queryset = WirelessLANGroup.objects.all()
  32. form = forms.WirelessLANGroupForm
  33. @register_model_view(WirelessLANGroup, 'delete')
  34. class WirelessLANGroupDeleteView(generic.ObjectDeleteView):
  35. queryset = WirelessLANGroup.objects.all()
  36. class WirelessLANGroupBulkImportView(generic.BulkImportView):
  37. queryset = WirelessLANGroup.objects.all()
  38. model_form = forms.WirelessLANGroupImportForm
  39. class WirelessLANGroupBulkEditView(generic.BulkEditView):
  40. queryset = WirelessLANGroup.objects.add_related_count(
  41. WirelessLANGroup.objects.all(),
  42. WirelessLAN,
  43. 'group',
  44. 'wirelesslan_count',
  45. cumulative=True
  46. )
  47. filterset = filtersets.WirelessLANGroupFilterSet
  48. table = tables.WirelessLANGroupTable
  49. form = forms.WirelessLANGroupBulkEditForm
  50. class WirelessLANGroupBulkDeleteView(generic.BulkDeleteView):
  51. queryset = WirelessLANGroup.objects.add_related_count(
  52. WirelessLANGroup.objects.all(),
  53. WirelessLAN,
  54. 'group',
  55. 'wirelesslan_count',
  56. cumulative=True
  57. )
  58. filterset = filtersets.WirelessLANGroupFilterSet
  59. table = tables.WirelessLANGroupTable
  60. #
  61. # Wireless LANs
  62. #
  63. class WirelessLANListView(generic.ObjectListView):
  64. queryset = WirelessLAN.objects.annotate(
  65. interface_count=count_related(Interface, 'wireless_lans')
  66. )
  67. filterset = filtersets.WirelessLANFilterSet
  68. filterset_form = forms.WirelessLANFilterForm
  69. table = tables.WirelessLANTable
  70. @register_model_view(WirelessLAN)
  71. class WirelessLANView(generic.ObjectView):
  72. queryset = WirelessLAN.objects.all()
  73. def get_extra_context(self, request, instance):
  74. attached_interfaces = Interface.objects.restrict(request.user, 'view').filter(
  75. wireless_lans=instance
  76. )
  77. interfaces_table = tables.WirelessLANInterfacesTable(attached_interfaces, user=request.user)
  78. interfaces_table.configure(request)
  79. return {
  80. 'interfaces_table': interfaces_table,
  81. }
  82. @register_model_view(WirelessLAN, 'edit')
  83. class WirelessLANEditView(generic.ObjectEditView):
  84. queryset = WirelessLAN.objects.all()
  85. form = forms.WirelessLANForm
  86. @register_model_view(WirelessLAN, 'delete')
  87. class WirelessLANDeleteView(generic.ObjectDeleteView):
  88. queryset = WirelessLAN.objects.all()
  89. class WirelessLANBulkImportView(generic.BulkImportView):
  90. queryset = WirelessLAN.objects.all()
  91. model_form = forms.WirelessLANImportForm
  92. class WirelessLANBulkEditView(generic.BulkEditView):
  93. queryset = WirelessLAN.objects.all()
  94. filterset = filtersets.WirelessLANFilterSet
  95. table = tables.WirelessLANTable
  96. form = forms.WirelessLANBulkEditForm
  97. class WirelessLANBulkDeleteView(generic.BulkDeleteView):
  98. queryset = WirelessLAN.objects.all()
  99. filterset = filtersets.WirelessLANFilterSet
  100. table = tables.WirelessLANTable
  101. #
  102. # Wireless Links
  103. #
  104. class WirelessLinkListView(generic.ObjectListView):
  105. queryset = WirelessLink.objects.all()
  106. filterset = filtersets.WirelessLinkFilterSet
  107. filterset_form = forms.WirelessLinkFilterForm
  108. table = tables.WirelessLinkTable
  109. @register_model_view(WirelessLink)
  110. class WirelessLinkView(generic.ObjectView):
  111. queryset = WirelessLink.objects.all()
  112. @register_model_view(WirelessLink, 'edit')
  113. class WirelessLinkEditView(generic.ObjectEditView):
  114. queryset = WirelessLink.objects.all()
  115. form = forms.WirelessLinkForm
  116. @register_model_view(WirelessLink, 'delete')
  117. class WirelessLinkDeleteView(generic.ObjectDeleteView):
  118. queryset = WirelessLink.objects.all()
  119. class WirelessLinkBulkImportView(generic.BulkImportView):
  120. queryset = WirelessLink.objects.all()
  121. model_form = forms.WirelessLinkImportForm
  122. class WirelessLinkBulkEditView(generic.BulkEditView):
  123. queryset = WirelessLink.objects.all()
  124. filterset = filtersets.WirelessLinkFilterSet
  125. table = tables.WirelessLinkTable
  126. form = forms.WirelessLinkBulkEditForm
  127. class WirelessLinkBulkDeleteView(generic.BulkDeleteView):
  128. queryset = WirelessLink.objects.all()
  129. filterset = filtersets.WirelessLinkFilterSet
  130. table = tables.WirelessLinkTable