views.py 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193
  1. from django.db.models import Count
  2. from core.models import ObjectChange
  3. from core.tables import ObjectChangeTable
  4. from netbox.views import generic
  5. from utilities.views import register_model_view
  6. from . import filtersets, forms, tables
  7. from .models import Group, User, ObjectPermission, Token
  8. #
  9. # Tokens
  10. #
  11. class TokenListView(generic.ObjectListView):
  12. queryset = Token.objects.all()
  13. filterset = filtersets.TokenFilterSet
  14. filterset_form = forms.TokenFilterForm
  15. table = tables.TokenTable
  16. @register_model_view(Token)
  17. class TokenView(generic.ObjectView):
  18. queryset = Token.objects.all()
  19. @register_model_view(Token, 'edit')
  20. class TokenEditView(generic.ObjectEditView):
  21. queryset = Token.objects.all()
  22. form = forms.TokenForm
  23. template_name = 'users/token_edit.html'
  24. @register_model_view(Token, 'delete')
  25. class TokenDeleteView(generic.ObjectDeleteView):
  26. queryset = Token.objects.all()
  27. class TokenBulkImportView(generic.BulkImportView):
  28. queryset = Token.objects.all()
  29. model_form = forms.TokenImportForm
  30. class TokenBulkEditView(generic.BulkEditView):
  31. queryset = Token.objects.all()
  32. table = tables.TokenTable
  33. form = forms.TokenBulkEditForm
  34. class TokenBulkDeleteView(generic.BulkDeleteView):
  35. queryset = Token.objects.all()
  36. table = tables.TokenTable
  37. #
  38. # Users
  39. #
  40. class UserListView(generic.ObjectListView):
  41. queryset = User.objects.all()
  42. filterset = filtersets.UserFilterSet
  43. filterset_form = forms.UserFilterForm
  44. table = tables.UserTable
  45. @register_model_view(User)
  46. class UserView(generic.ObjectView):
  47. queryset = User.objects.all()
  48. template_name = 'users/user.html'
  49. def get_extra_context(self, request, instance):
  50. changelog = ObjectChange.objects.restrict(request.user, 'view').filter(user=instance)[:20]
  51. changelog_table = ObjectChangeTable(changelog)
  52. return {
  53. 'changelog_table': changelog_table,
  54. }
  55. @register_model_view(User, 'edit')
  56. class UserEditView(generic.ObjectEditView):
  57. queryset = User.objects.all()
  58. form = forms.UserForm
  59. @register_model_view(User, 'delete')
  60. class UserDeleteView(generic.ObjectDeleteView):
  61. queryset = User.objects.all()
  62. class UserBulkEditView(generic.BulkEditView):
  63. queryset = User.objects.all()
  64. filterset = filtersets.UserFilterSet
  65. table = tables.UserTable
  66. form = forms.UserBulkEditForm
  67. class UserBulkImportView(generic.BulkImportView):
  68. queryset = User.objects.all()
  69. model_form = forms.UserImportForm
  70. class UserBulkDeleteView(generic.BulkDeleteView):
  71. queryset = User.objects.all()
  72. filterset = filtersets.UserFilterSet
  73. table = tables.UserTable
  74. #
  75. # Groups
  76. #
  77. class GroupListView(generic.ObjectListView):
  78. queryset = Group.objects.annotate(users_count=Count('user')).order_by('name')
  79. filterset = filtersets.GroupFilterSet
  80. filterset_form = forms.GroupFilterForm
  81. table = tables.GroupTable
  82. @register_model_view(Group)
  83. class GroupView(generic.ObjectView):
  84. queryset = Group.objects.all()
  85. template_name = 'users/group.html'
  86. @register_model_view(Group, 'edit')
  87. class GroupEditView(generic.ObjectEditView):
  88. queryset = Group.objects.all()
  89. form = forms.GroupForm
  90. @register_model_view(Group, 'delete')
  91. class GroupDeleteView(generic.ObjectDeleteView):
  92. queryset = Group.objects.all()
  93. class GroupBulkImportView(generic.BulkImportView):
  94. queryset = Group.objects.all()
  95. model_form = forms.GroupImportForm
  96. class GroupBulkEditView(generic.BulkEditView):
  97. queryset = Group.objects.all()
  98. filterset = filtersets.GroupFilterSet
  99. table = tables.GroupTable
  100. form = forms.GroupBulkEditForm
  101. class GroupBulkDeleteView(generic.BulkDeleteView):
  102. queryset = Group.objects.annotate(users_count=Count('user')).order_by('name')
  103. filterset = filtersets.GroupFilterSet
  104. table = tables.GroupTable
  105. #
  106. # ObjectPermissions
  107. #
  108. class ObjectPermissionListView(generic.ObjectListView):
  109. queryset = ObjectPermission.objects.all()
  110. filterset = filtersets.ObjectPermissionFilterSet
  111. filterset_form = forms.ObjectPermissionFilterForm
  112. table = tables.ObjectPermissionTable
  113. @register_model_view(ObjectPermission)
  114. class ObjectPermissionView(generic.ObjectView):
  115. queryset = ObjectPermission.objects.all()
  116. template_name = 'users/objectpermission.html'
  117. @register_model_view(ObjectPermission, 'edit')
  118. class ObjectPermissionEditView(generic.ObjectEditView):
  119. queryset = ObjectPermission.objects.all()
  120. form = forms.ObjectPermissionForm
  121. @register_model_view(ObjectPermission, 'delete')
  122. class ObjectPermissionDeleteView(generic.ObjectDeleteView):
  123. queryset = ObjectPermission.objects.all()
  124. class ObjectPermissionBulkEditView(generic.BulkEditView):
  125. queryset = ObjectPermission.objects.all()
  126. filterset = filtersets.ObjectPermissionFilterSet
  127. table = tables.ObjectPermissionTable
  128. form = forms.ObjectPermissionBulkEditForm
  129. class ObjectPermissionBulkDeleteView(generic.BulkDeleteView):
  130. queryset = ObjectPermission.objects.all()
  131. filterset = filtersets.ObjectPermissionFilterSet
  132. table = tables.ObjectPermissionTable