Skip to content

Commit d69042f

Browse files
committed
Clean up token tables
1 parent f6290dd commit d69042f

File tree

4 files changed

+41
-64
lines changed

4 files changed

+41
-64
lines changed

netbox/account/tables.py

Lines changed: 0 additions & 58 deletions
This file was deleted.

netbox/account/views.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,9 @@
2626
from netbox.authentication import get_auth_backend_display, get_saml_idps
2727
from netbox.config import get_config
2828
from netbox.views import generic
29-
from users import forms, tables
29+
from users import forms
3030
from users.models import UserConfig
31+
from users.tables import TokenTable
3132
from utilities.request import safe_for_redirect
3233
from utilities.string import remove_linebreaks
3334
from utilities.views import register_model_view
@@ -328,7 +329,8 @@ class UserTokenListView(LoginRequiredMixin, View):
328329

329330
def get(self, request):
330331
tokens = UserToken.objects.filter(user=request.user)
331-
table = tables.UserTokenTable(tokens)
332+
table = TokenTable(tokens)
333+
table.columns.hide('user')
332334
table.configure(request)
333335

334336
return render(request, 'account/token_list.html', {

netbox/netbox/tables/columns.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -270,7 +270,7 @@ def render(self, record, table, **kwargs):
270270
if not (self.actions or self.extra_buttons):
271271
return ''
272272
# Skip dummy records (e.g. available VLANs or IP ranges replacing individual IPs)
273-
if type(record) is not model or not getattr(record, 'pk', None):
273+
if not isinstance(record, model) or not getattr(record, 'pk', None):
274274
return ''
275275

276276
if request := getattr(table, 'context', {}).get('request'):

netbox/users/tables.py

Lines changed: 36 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import django_tables2 as tables
22
from django.utils.translation import gettext as _
33

4-
from account.tables import UserTokenTable
54
from netbox.tables import NetBoxTable, columns
65
from users.models import Group, ObjectPermission, Token, User
76

@@ -12,19 +11,53 @@
1211
'UserTable',
1312
)
1413

14+
TOKEN = """<samp><span id="token_{{ record.pk }}">{{ record }}</span></samp>"""
1515

16-
class TokenTable(UserTokenTable):
16+
COPY_BUTTON = """
17+
{% if settings.ALLOW_TOKEN_RETRIEVAL %}
18+
{% copy_content record.pk prefix="token_" color="success" %}
19+
{% endif %}
20+
"""
21+
22+
23+
class TokenTable(NetBoxTable):
1724
user = tables.Column(
1825
linkify=True,
1926
verbose_name=_('User')
2027
)
28+
token = columns.TemplateColumn(
29+
verbose_name=_('token'),
30+
template_code=TOKEN,
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+
extra_buttons=COPY_BUTTON
52+
)
2153

2254
class Meta(NetBoxTable.Meta):
2355
model = Token
2456
fields = (
25-
'pk', 'id', 'version', 'key', 'pepper_id', 'user', 'description', 'write_enabled', 'created', 'expires',
57+
'pk', 'id', 'token', 'version', 'pepper_id', 'user', 'description', 'write_enabled', 'created', 'expires',
2658
'last_used', 'allowed_ips',
2759
)
60+
default_columns = ('token', 'version', 'user', 'write_enabled', 'description', 'allowed_ips')
2861

2962

3063
class UserTable(NetBoxTable):

0 commit comments

Comments
 (0)