tables.py 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206
  1. import django_tables2 as tables
  2. from django.utils.translation import gettext as _
  3. from netbox.tables import NetBoxTable, columns
  4. from users.models import Group, ObjectPermission, Owner, OwnerGroup, Token, User
  5. __all__ = (
  6. 'GroupTable',
  7. 'ObjectPermissionTable',
  8. 'OwnerGroupTable',
  9. 'OwnerTable',
  10. 'TokenTable',
  11. 'UserTable',
  12. )
  13. TOKEN = """<samp><a href="{{ record.get_absolute_url }}">{{ record }}</a></samp>"""
  14. class TokenTable(NetBoxTable):
  15. user = tables.Column(
  16. linkify=True,
  17. verbose_name=_('User')
  18. )
  19. token = columns.TemplateColumn(
  20. verbose_name=_('token'),
  21. template_code=TOKEN,
  22. orderable=False,
  23. )
  24. enabled = columns.BooleanColumn(
  25. verbose_name=_('Enabled')
  26. )
  27. write_enabled = columns.BooleanColumn(
  28. verbose_name=_('Write Enabled')
  29. )
  30. created = columns.DateTimeColumn(
  31. timespec='minutes',
  32. verbose_name=_('Created'),
  33. )
  34. expires = columns.DateTimeColumn(
  35. timespec='minutes',
  36. verbose_name=_('Expires'),
  37. )
  38. last_used = columns.DateTimeColumn(
  39. verbose_name=_('Last Used'),
  40. )
  41. allowed_ips = columns.ArrayColumn(
  42. verbose_name=_('Allowed IPs'),
  43. )
  44. actions = columns.ActionsColumn(
  45. actions=('edit', 'delete'),
  46. )
  47. class Meta(NetBoxTable.Meta):
  48. model = Token
  49. fields = (
  50. 'pk', 'id', 'token', 'version', 'pepper_id', 'user', 'description', 'enabled', 'write_enabled', 'created',
  51. 'expires', 'last_used', 'allowed_ips',
  52. )
  53. default_columns = ('token', 'version', 'user', 'enabled', 'write_enabled', 'description', 'allowed_ips')
  54. class UserTable(NetBoxTable):
  55. username = tables.Column(
  56. verbose_name=_('Username'),
  57. linkify=True
  58. )
  59. groups = columns.ManyToManyColumn(
  60. verbose_name=_('Groups'),
  61. linkify_item=('users:group', {'pk': tables.A('pk')})
  62. )
  63. is_active = columns.BooleanColumn(
  64. verbose_name=_('Is Active'),
  65. )
  66. is_superuser = columns.BooleanColumn(
  67. verbose_name=_('Is Superuser'),
  68. )
  69. actions = columns.ActionsColumn(
  70. actions=('edit', 'delete'),
  71. )
  72. class Meta(NetBoxTable.Meta):
  73. model = User
  74. fields = (
  75. 'pk', 'id', 'username', 'first_name', 'last_name', 'email', 'groups', 'is_active', 'is_superuser',
  76. 'last_login',
  77. )
  78. default_columns = ('pk', 'username', 'first_name', 'last_name', 'email', 'is_active')
  79. class GroupTable(NetBoxTable):
  80. name = tables.Column(
  81. verbose_name=_('Name'),
  82. linkify=True
  83. )
  84. actions = columns.ActionsColumn(
  85. actions=('edit', 'delete'),
  86. )
  87. class Meta(NetBoxTable.Meta):
  88. model = Group
  89. fields = ('pk', 'id', 'name', 'users_count', 'description')
  90. class ObjectPermissionTable(NetBoxTable):
  91. name = tables.Column(
  92. verbose_name=_('Name'),
  93. linkify=True
  94. )
  95. object_types = columns.ContentTypesColumn(
  96. verbose_name=_('Object Types'),
  97. )
  98. enabled = columns.BooleanColumn(
  99. verbose_name=_('Enabled'),
  100. )
  101. can_view = columns.BooleanColumn(
  102. verbose_name=_('Can View'),
  103. orderable=False,
  104. )
  105. can_add = columns.BooleanColumn(
  106. verbose_name=_('Can Add'),
  107. orderable=False,
  108. )
  109. can_change = columns.BooleanColumn(
  110. verbose_name=_('Can Change'),
  111. orderable=False,
  112. )
  113. can_delete = columns.BooleanColumn(
  114. verbose_name=_('Can Delete'),
  115. orderable=False,
  116. )
  117. custom_actions = columns.ArrayColumn(
  118. verbose_name=_('Custom Actions'),
  119. accessor=tables.A('actions')
  120. )
  121. users = columns.ManyToManyColumn(
  122. verbose_name=_('Users'),
  123. linkify_item=('users:user', {'pk': tables.A('pk')})
  124. )
  125. groups = columns.ManyToManyColumn(
  126. verbose_name=_('Groups'),
  127. linkify_item=('users:group', {'pk': tables.A('pk')})
  128. )
  129. actions = columns.ActionsColumn(
  130. actions=('edit', 'delete'),
  131. )
  132. class Meta(NetBoxTable.Meta):
  133. model = ObjectPermission
  134. fields = (
  135. 'pk', 'id', 'name', 'enabled', 'object_types', 'can_view', 'can_add', 'can_change', 'can_delete',
  136. 'custom_actions', 'users', 'groups', 'constraints', 'description',
  137. )
  138. default_columns = (
  139. 'pk', 'name', 'enabled', 'object_types', 'can_view', 'can_add', 'can_change', 'can_delete', 'description',
  140. )
  141. class OwnerGroupTable(NetBoxTable):
  142. name = tables.Column(
  143. verbose_name=_('Name'),
  144. linkify=True
  145. )
  146. owner_count = columns.LinkedCountColumn(
  147. viewname='users:owner_list',
  148. url_params={'group_id': 'pk'},
  149. verbose_name=_('Owners')
  150. )
  151. actions = columns.ActionsColumn(
  152. actions=('edit', 'delete'),
  153. )
  154. class Meta(NetBoxTable.Meta):
  155. model = OwnerGroup
  156. fields = (
  157. 'pk', 'id', 'name', 'description',
  158. )
  159. default_columns = ('pk', 'name', 'owner_count', 'description')
  160. class OwnerTable(NetBoxTable):
  161. name = tables.Column(
  162. verbose_name=_('Name'),
  163. linkify=True
  164. )
  165. group = tables.Column(
  166. verbose_name=_('Group'),
  167. linkify=True,
  168. )
  169. user_groups = columns.ManyToManyColumn(
  170. verbose_name=_('Groups'),
  171. linkify_item=('users:group', {'pk': tables.A('pk')})
  172. )
  173. users = columns.ManyToManyColumn(
  174. verbose_name=_('Users'),
  175. linkify_item=('users:user', {'pk': tables.A('pk')})
  176. )
  177. actions = columns.ActionsColumn(
  178. actions=('edit', 'delete'),
  179. )
  180. class Meta(NetBoxTable.Meta):
  181. model = Owner
  182. fields = (
  183. 'pk', 'id', 'name', 'group', 'description', 'user_groups', 'users',
  184. )
  185. default_columns = ('pk', 'name', 'group', 'description', 'user_groups', 'users')