views.py 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236
  1. from django.db.models import Count
  2. from core.models import ObjectChange
  3. from core.tables import ObjectChangeTable
  4. from netbox.object_actions import AddObject, BulkDelete, BulkEdit, BulkExport, BulkImport, BulkRename
  5. from netbox.views import generic
  6. from utilities.views import register_model_view
  7. from . import filtersets, forms, tables
  8. from .models import Group, User, ObjectPermission, Token
  9. #
  10. # Tokens
  11. #
  12. @register_model_view(Token, 'list', path='', detail=False)
  13. class TokenListView(generic.ObjectListView):
  14. queryset = Token.objects.all()
  15. filterset = filtersets.TokenFilterSet
  16. filterset_form = forms.TokenFilterForm
  17. table = tables.TokenTable
  18. actions = (AddObject, BulkImport, BulkExport, BulkEdit, BulkDelete)
  19. @register_model_view(Token)
  20. class TokenView(generic.ObjectView):
  21. queryset = Token.objects.all()
  22. @register_model_view(Token, 'add', detail=False)
  23. @register_model_view(Token, 'edit')
  24. class TokenEditView(generic.ObjectEditView):
  25. queryset = Token.objects.all()
  26. form = forms.TokenForm
  27. template_name = 'users/token_edit.html'
  28. @register_model_view(Token, 'delete')
  29. class TokenDeleteView(generic.ObjectDeleteView):
  30. queryset = Token.objects.all()
  31. @register_model_view(Token, 'bulk_import', path='import', detail=False)
  32. class TokenBulkImportView(generic.BulkImportView):
  33. queryset = Token.objects.all()
  34. model_form = forms.TokenImportForm
  35. @register_model_view(Token, 'bulk_edit', path='edit', detail=False)
  36. class TokenBulkEditView(generic.BulkEditView):
  37. queryset = Token.objects.all()
  38. table = tables.TokenTable
  39. form = forms.TokenBulkEditForm
  40. @register_model_view(Token, 'bulk_delete', path='delete', detail=False)
  41. class TokenBulkDeleteView(generic.BulkDeleteView):
  42. queryset = Token.objects.all()
  43. table = tables.TokenTable
  44. #
  45. # Users
  46. #
  47. @register_model_view(User, 'list', path='', detail=False)
  48. class UserListView(generic.ObjectListView):
  49. queryset = User.objects.all()
  50. filterset = filtersets.UserFilterSet
  51. filterset_form = forms.UserFilterForm
  52. table = tables.UserTable
  53. @register_model_view(User)
  54. class UserView(generic.ObjectView):
  55. queryset = User.objects.all()
  56. template_name = 'users/user.html'
  57. def get_extra_context(self, request, instance):
  58. changelog = ObjectChange.objects.valid_models().restrict(request.user, 'view').filter(user=instance)[:20]
  59. changelog_table = ObjectChangeTable(changelog)
  60. changelog_table.orderable = False
  61. changelog_table.configure(request)
  62. return {
  63. 'changelog_table': changelog_table,
  64. }
  65. @register_model_view(User, 'add', detail=False)
  66. @register_model_view(User, 'edit')
  67. class UserEditView(generic.ObjectEditView):
  68. queryset = User.objects.all()
  69. form = forms.UserForm
  70. @register_model_view(User, 'delete')
  71. class UserDeleteView(generic.ObjectDeleteView):
  72. queryset = User.objects.all()
  73. @register_model_view(User, 'bulk_import', path='import', detail=False)
  74. class UserBulkImportView(generic.BulkImportView):
  75. queryset = User.objects.all()
  76. model_form = forms.UserImportForm
  77. @register_model_view(User, 'bulk_edit', path='edit', detail=False)
  78. class UserBulkEditView(generic.BulkEditView):
  79. queryset = User.objects.all()
  80. filterset = filtersets.UserFilterSet
  81. table = tables.UserTable
  82. form = forms.UserBulkEditForm
  83. @register_model_view(User, 'bulk_rename', path='rename', detail=False)
  84. class UserBulkRenameView(generic.BulkRenameView):
  85. queryset = User.objects.all()
  86. field_name = 'username'
  87. filterset = filtersets.UserFilterSet
  88. @register_model_view(User, 'bulk_delete', path='delete', detail=False)
  89. class UserBulkDeleteView(generic.BulkDeleteView):
  90. queryset = User.objects.all()
  91. filterset = filtersets.UserFilterSet
  92. table = tables.UserTable
  93. #
  94. # Groups
  95. #
  96. @register_model_view(Group, 'list', path='', detail=False)
  97. class GroupListView(generic.ObjectListView):
  98. queryset = Group.objects.annotate(users_count=Count('user')).order_by('name')
  99. filterset = filtersets.GroupFilterSet
  100. filterset_form = forms.GroupFilterForm
  101. table = tables.GroupTable
  102. @register_model_view(Group)
  103. class GroupView(generic.ObjectView):
  104. queryset = Group.objects.all()
  105. template_name = 'users/group.html'
  106. @register_model_view(Group, 'add', detail=False)
  107. @register_model_view(Group, 'edit')
  108. class GroupEditView(generic.ObjectEditView):
  109. queryset = Group.objects.all()
  110. form = forms.GroupForm
  111. @register_model_view(Group, 'delete')
  112. class GroupDeleteView(generic.ObjectDeleteView):
  113. queryset = Group.objects.all()
  114. @register_model_view(Group, 'bulk_import', path='import', detail=False)
  115. class GroupBulkImportView(generic.BulkImportView):
  116. queryset = Group.objects.all()
  117. model_form = forms.GroupImportForm
  118. @register_model_view(Group, 'bulk_edit', path='edit', detail=False)
  119. class GroupBulkEditView(generic.BulkEditView):
  120. queryset = Group.objects.all()
  121. filterset = filtersets.GroupFilterSet
  122. table = tables.GroupTable
  123. form = forms.GroupBulkEditForm
  124. @register_model_view(Group, 'bulk_rename', path='rename', detail=False)
  125. class GroupBulkRenameView(generic.BulkRenameView):
  126. queryset = Group.objects.all()
  127. filterset = filtersets.GroupFilterSet
  128. @register_model_view(Group, 'bulk_delete', path='delete', detail=False)
  129. class GroupBulkDeleteView(generic.BulkDeleteView):
  130. queryset = Group.objects.annotate(users_count=Count('user')).order_by('name')
  131. filterset = filtersets.GroupFilterSet
  132. table = tables.GroupTable
  133. #
  134. # ObjectPermissions
  135. #
  136. @register_model_view(ObjectPermission, 'list', path='', detail=False)
  137. class ObjectPermissionListView(generic.ObjectListView):
  138. queryset = ObjectPermission.objects.all()
  139. filterset = filtersets.ObjectPermissionFilterSet
  140. filterset_form = forms.ObjectPermissionFilterForm
  141. table = tables.ObjectPermissionTable
  142. actions = (AddObject, BulkExport, BulkEdit, BulkRename, BulkDelete)
  143. @register_model_view(ObjectPermission)
  144. class ObjectPermissionView(generic.ObjectView):
  145. queryset = ObjectPermission.objects.all()
  146. template_name = 'users/objectpermission.html'
  147. @register_model_view(ObjectPermission, 'add', detail=False)
  148. @register_model_view(ObjectPermission, 'edit')
  149. class ObjectPermissionEditView(generic.ObjectEditView):
  150. queryset = ObjectPermission.objects.all()
  151. form = forms.ObjectPermissionForm
  152. @register_model_view(ObjectPermission, 'delete')
  153. class ObjectPermissionDeleteView(generic.ObjectDeleteView):
  154. queryset = ObjectPermission.objects.all()
  155. filterset = filtersets.ObjectPermissionFilterSet
  156. @register_model_view(ObjectPermission, 'bulk_edit', path='edit', detail=False)
  157. class ObjectPermissionBulkEditView(generic.BulkEditView):
  158. queryset = ObjectPermission.objects.all()
  159. filterset = filtersets.ObjectPermissionFilterSet
  160. table = tables.ObjectPermissionTable
  161. form = forms.ObjectPermissionBulkEditForm
  162. @register_model_view(ObjectPermission, 'bulk_rename', path='rename', detail=False)
  163. class ObjectPermissionBulkRenameView(generic.BulkRenameView):
  164. queryset = ObjectPermission.objects.all()
  165. @register_model_view(ObjectPermission, 'bulk_delete', path='delete', detail=False)
  166. class ObjectPermissionBulkDeleteView(generic.BulkDeleteView):
  167. queryset = ObjectPermission.objects.all()
  168. filterset = filtersets.ObjectPermissionFilterSet
  169. table = tables.ObjectPermissionTable