views.py 5.2 KB

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