tables.py 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. import django_tables2 as tables
  2. from django.utils.translation import gettext as _
  3. from account.tables import UserTokenTable
  4. from netbox.tables import NetBoxTable, columns
  5. from users.models import NetBoxGroup, NetBoxUser, ObjectPermission, Token
  6. __all__ = (
  7. 'GroupTable',
  8. 'ObjectPermissionTable',
  9. 'TokenTable',
  10. 'UserTable',
  11. )
  12. class TokenTable(UserTokenTable):
  13. user = tables.Column(
  14. linkify=True,
  15. verbose_name=_('User')
  16. )
  17. class Meta(NetBoxTable.Meta):
  18. model = Token
  19. fields = (
  20. 'pk', 'id', 'key', 'user', 'description', 'write_enabled', 'created', 'expires', 'last_used', 'allowed_ips',
  21. )
  22. class UserTable(NetBoxTable):
  23. username = tables.Column(
  24. verbose_name=_('Username'),
  25. linkify=True
  26. )
  27. groups = columns.ManyToManyColumn(
  28. verbose_name=_('Groups'),
  29. linkify_item=('users:netboxgroup', {'pk': tables.A('pk')})
  30. )
  31. is_active = columns.BooleanColumn(
  32. verbose_name=_('Is Active'),
  33. )
  34. is_staff = columns.BooleanColumn(
  35. verbose_name=_('Is Staff'),
  36. )
  37. is_superuser = columns.BooleanColumn(
  38. verbose_name=_('Is Superuser'),
  39. )
  40. actions = columns.ActionsColumn(
  41. actions=('edit', 'delete'),
  42. )
  43. class Meta(NetBoxTable.Meta):
  44. model = NetBoxUser
  45. fields = (
  46. 'pk', 'id', 'username', 'first_name', 'last_name', 'email', 'groups', 'is_active', 'is_staff',
  47. 'is_superuser', 'last_login',
  48. )
  49. default_columns = ('pk', 'username', 'first_name', 'last_name', 'email', 'is_active')
  50. class GroupTable(NetBoxTable):
  51. name = tables.Column(
  52. verbose_name=_('Name'),
  53. linkify=True
  54. )
  55. actions = columns.ActionsColumn(
  56. actions=('edit', 'delete'),
  57. )
  58. class Meta(NetBoxTable.Meta):
  59. model = NetBoxGroup
  60. fields = (
  61. 'pk', 'id', 'name', 'users_count',
  62. )
  63. default_columns = ('pk', 'name', 'users_count', )
  64. class ObjectPermissionTable(NetBoxTable):
  65. name = tables.Column(
  66. verbose_name=_('Name'),
  67. linkify=True
  68. )
  69. object_types = columns.ContentTypesColumn(
  70. verbose_name=_('Object Types'),
  71. )
  72. enabled = columns.BooleanColumn(
  73. verbose_name=_('Enabled'),
  74. )
  75. can_view = columns.BooleanColumn(
  76. verbose_name=_('Can View'),
  77. )
  78. can_add = columns.BooleanColumn(
  79. verbose_name=_('Can Add'),
  80. )
  81. can_change = columns.BooleanColumn(
  82. verbose_name=_('Can Change'),
  83. )
  84. can_delete = columns.BooleanColumn(
  85. verbose_name=_('Can Delete'),
  86. )
  87. custom_actions = columns.ArrayColumn(
  88. verbose_name=_('Custom Actions'),
  89. accessor=tables.A('actions')
  90. )
  91. users = columns.ManyToManyColumn(
  92. verbose_name=_('Users'),
  93. linkify_item=('users:netboxuser', {'pk': tables.A('pk')})
  94. )
  95. groups = columns.ManyToManyColumn(
  96. verbose_name=_('Groups'),
  97. linkify_item=('users:netboxgroup', {'pk': tables.A('pk')})
  98. )
  99. actions = columns.ActionsColumn(
  100. actions=('edit', 'delete'),
  101. )
  102. class Meta(NetBoxTable.Meta):
  103. model = ObjectPermission
  104. fields = (
  105. 'pk', 'id', 'name', 'enabled', 'object_types', 'can_view', 'can_add', 'can_change', 'can_delete',
  106. 'custom_actions', 'users', 'groups', 'constraints', 'description',
  107. )
  108. default_columns = (
  109. 'pk', 'name', 'enabled', 'object_types', 'can_view', 'can_add', 'can_change', 'can_delete', 'description',
  110. )