Coverage for users/tables.py: 100%

70 statements  

« prev     ^ index     » next       coverage.py v7.15.2, created at 2026-10-10 18:35 +0000

1import django_tables2 as tables 

2from django.utils.translation import gettext as _ 

3 

4from netbox.tables import NetBoxTable, columns 

5from users.models import Group, ObjectPermission, Owner, OwnerGroup, Token, User 

6 

7__all__ = ( 

8 'GroupTable', 

9 'ObjectPermissionTable', 

10 'OwnerGroupTable', 

11 'OwnerTable', 

12 'TokenTable', 

13 'UserTable', 

14) 

15 

16TOKEN = """<samp><a href="{{ record.get_absolute_url }}">{{ record }}</a></samp>""" 

17 

18 

19class TokenTable(NetBoxTable): 

20 user = tables.Column( 

21 linkify=True, 

22 verbose_name=_('User') 

23 ) 

24 token = columns.TemplateColumn( 

25 verbose_name=_('token'), 

26 template_code=TOKEN, 

27 orderable=False, 

28 ) 

29 enabled = columns.BooleanColumn( 

30 verbose_name=_('Enabled') 

31 ) 

32 write_enabled = columns.BooleanColumn( 

33 verbose_name=_('Write Enabled') 

34 ) 

35 created = columns.DateTimeColumn( 

36 timespec='minutes', 

37 verbose_name=_('Created'), 

38 ) 

39 expires = columns.DateTimeColumn( 

40 timespec='minutes', 

41 verbose_name=_('Expires'), 

42 ) 

43 last_used = columns.DateTimeColumn( 

44 verbose_name=_('Last Used'), 

45 ) 

46 allowed_ips = columns.ArrayColumn( 

47 verbose_name=_('Allowed IPs'), 

48 ) 

49 actions = columns.ActionsColumn( 

50 actions=('edit', 'delete'), 

51 ) 

52 

53 class Meta(NetBoxTable.Meta): 

54 model = Token 

55 fields = ( 

56 'pk', 'id', 'token', 'version', 'pepper_id', 'user', 'description', 'enabled', 'write_enabled', 'created', 

57 'expires', 'last_used', 'allowed_ips', 

58 ) 

59 default_columns = ('token', 'version', 'user', 'enabled', 'write_enabled', 'description', 'allowed_ips') 

60 

61 

62class UserTable(NetBoxTable): 

63 username = tables.Column( 

64 verbose_name=_('Username'), 

65 linkify=True 

66 ) 

67 groups = columns.ManyToManyColumn( 

68 verbose_name=_('Groups'), 

69 linkify_item=('users:group', {'pk': tables.A('pk')}) 

70 ) 

71 is_active = columns.BooleanColumn( 

72 verbose_name=_('Is Active'), 

73 ) 

74 is_superuser = columns.BooleanColumn( 

75 verbose_name=_('Is Superuser'), 

76 ) 

77 actions = columns.ActionsColumn( 

78 actions=('edit', 'delete'), 

79 ) 

80 

81 class Meta(NetBoxTable.Meta): 

82 model = User 

83 fields = ( 

84 'pk', 'id', 'username', 'first_name', 'last_name', 'email', 'groups', 'is_active', 'is_superuser', 

85 'last_login', 

86 ) 

87 default_columns = ('pk', 'username', 'first_name', 'last_name', 'email', 'is_active') 

88 

89 

90class GroupTable(NetBoxTable): 

91 name = tables.Column( 

92 verbose_name=_('Name'), 

93 linkify=True 

94 ) 

95 actions = columns.ActionsColumn( 

96 actions=('edit', 'delete'), 

97 ) 

98 

99 class Meta(NetBoxTable.Meta): 

100 model = Group 

101 fields = ('pk', 'id', 'name', 'users_count', 'description') 

102 

103 

104class ObjectPermissionTable(NetBoxTable): 

105 name = tables.Column( 

106 verbose_name=_('Name'), 

107 linkify=True 

108 ) 

109 object_types = columns.ContentTypesColumn( 

110 verbose_name=_('Object Types'), 

111 ) 

112 enabled = columns.BooleanColumn( 

113 verbose_name=_('Enabled'), 

114 ) 

115 can_view = columns.BooleanColumn( 

116 verbose_name=_('Can View'), 

117 orderable=False, 

118 ) 

119 can_add = columns.BooleanColumn( 

120 verbose_name=_('Can Add'), 

121 orderable=False, 

122 ) 

123 can_change = columns.BooleanColumn( 

124 verbose_name=_('Can Change'), 

125 orderable=False, 

126 ) 

127 can_delete = columns.BooleanColumn( 

128 verbose_name=_('Can Delete'), 

129 orderable=False, 

130 ) 

131 custom_actions = columns.ArrayColumn( 

132 verbose_name=_('Custom Actions'), 

133 accessor=tables.A('actions') 

134 ) 

135 users = columns.ManyToManyColumn( 

136 verbose_name=_('Users'), 

137 linkify_item=('users:user', {'pk': tables.A('pk')}) 

138 ) 

139 groups = columns.ManyToManyColumn( 

140 verbose_name=_('Groups'), 

141 linkify_item=('users:group', {'pk': tables.A('pk')}) 

142 ) 

143 actions = columns.ActionsColumn( 

144 actions=('edit', 'delete'), 

145 ) 

146 

147 class Meta(NetBoxTable.Meta): 

148 model = ObjectPermission 

149 fields = ( 

150 'pk', 'id', 'name', 'enabled', 'object_types', 'can_view', 'can_add', 'can_change', 'can_delete', 

151 'custom_actions', 'users', 'groups', 'constraints', 'description', 

152 ) 

153 default_columns = ( 

154 'pk', 'name', 'enabled', 'object_types', 'can_view', 'can_add', 'can_change', 'can_delete', 'description', 

155 ) 

156 

157 

158class OwnerGroupTable(NetBoxTable): 

159 name = tables.Column( 

160 verbose_name=_('Name'), 

161 linkify=True 

162 ) 

163 owner_count = columns.LinkedCountColumn( 

164 viewname='users:owner_list', 

165 url_params={'group_id': 'pk'}, 

166 verbose_name=_('Owners') 

167 ) 

168 actions = columns.ActionsColumn( 

169 actions=('edit', 'delete'), 

170 ) 

171 

172 class Meta(NetBoxTable.Meta): 

173 model = OwnerGroup 

174 fields = ( 

175 'pk', 'id', 'name', 'description', 

176 ) 

177 default_columns = ('pk', 'name', 'owner_count', 'description') 

178 

179 

180class OwnerTable(NetBoxTable): 

181 name = tables.Column( 

182 verbose_name=_('Name'), 

183 linkify=True 

184 ) 

185 group = tables.Column( 

186 verbose_name=_('Group'), 

187 linkify=True, 

188 ) 

189 user_groups = columns.ManyToManyColumn( 

190 verbose_name=_('Groups'), 

191 linkify_item=('users:group', {'pk': tables.A('pk')}) 

192 ) 

193 users = columns.ManyToManyColumn( 

194 verbose_name=_('Users'), 

195 linkify_item=('users:user', {'pk': tables.A('pk')}) 

196 ) 

197 actions = columns.ActionsColumn( 

198 actions=('edit', 'delete'), 

199 ) 

200 

201 class Meta(NetBoxTable.Meta): 

202 model = Owner 

203 fields = ( 

204 'pk', 'id', 'name', 'group', 'description', 'user_groups', 'users', 

205 ) 

206 default_columns = ('pk', 'name', 'group', 'description', 'user_groups', 'users')