mirror of
https://github.com/netbox-community/netbox.git
synced 2025-12-15 21:09:36 -06:00
Clean up token tables
This commit is contained in:
parent
f6290dd7af
commit
d69042f26e
@ -1,58 +0,0 @@
|
|||||||
from django.utils.translation import gettext as _
|
|
||||||
|
|
||||||
from account.models import UserToken
|
|
||||||
from netbox.tables import NetBoxTable, columns
|
|
||||||
|
|
||||||
__all__ = (
|
|
||||||
'UserTokenTable',
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
TOKEN = """<samp><span id="token_{{ record.pk }}">{{ record }}</span></samp>"""
|
|
||||||
|
|
||||||
ALLOWED_IPS = """{{ value|join:", " }}"""
|
|
||||||
|
|
||||||
COPY_BUTTON = """
|
|
||||||
{% if settings.ALLOW_TOKEN_RETRIEVAL %}
|
|
||||||
{% copy_content record.pk prefix="token_" color="success" %}
|
|
||||||
{% endif %}
|
|
||||||
"""
|
|
||||||
|
|
||||||
|
|
||||||
class UserTokenTable(NetBoxTable):
|
|
||||||
"""
|
|
||||||
Table for users to manager their own API tokens under account views.
|
|
||||||
"""
|
|
||||||
key = columns.TemplateColumn(
|
|
||||||
verbose_name=_('Key'),
|
|
||||||
template_code=TOKEN,
|
|
||||||
)
|
|
||||||
write_enabled = columns.BooleanColumn(
|
|
||||||
verbose_name=_('Write Enabled')
|
|
||||||
)
|
|
||||||
created = columns.DateTimeColumn(
|
|
||||||
timespec='minutes',
|
|
||||||
verbose_name=_('Created'),
|
|
||||||
)
|
|
||||||
expires = columns.DateTimeColumn(
|
|
||||||
timespec='minutes',
|
|
||||||
verbose_name=_('Expires'),
|
|
||||||
)
|
|
||||||
last_used = columns.DateTimeColumn(
|
|
||||||
verbose_name=_('Last Used'),
|
|
||||||
)
|
|
||||||
allowed_ips = columns.TemplateColumn(
|
|
||||||
verbose_name=_('Allowed IPs'),
|
|
||||||
template_code=ALLOWED_IPS
|
|
||||||
)
|
|
||||||
actions = columns.ActionsColumn(
|
|
||||||
actions=('edit', 'delete'),
|
|
||||||
extra_buttons=COPY_BUTTON
|
|
||||||
)
|
|
||||||
|
|
||||||
class Meta(NetBoxTable.Meta):
|
|
||||||
model = UserToken
|
|
||||||
fields = (
|
|
||||||
'pk', 'id', 'version', 'key', 'pepper_id', 'description', 'write_enabled', 'created', 'expires',
|
|
||||||
'last_used', 'allowed_ips',
|
|
||||||
)
|
|
||||||
@ -26,8 +26,9 @@ from extras.tables import BookmarkTable, NotificationTable, SubscriptionTable
|
|||||||
from netbox.authentication import get_auth_backend_display, get_saml_idps
|
from netbox.authentication import get_auth_backend_display, get_saml_idps
|
||||||
from netbox.config import get_config
|
from netbox.config import get_config
|
||||||
from netbox.views import generic
|
from netbox.views import generic
|
||||||
from users import forms, tables
|
from users import forms
|
||||||
from users.models import UserConfig
|
from users.models import UserConfig
|
||||||
|
from users.tables import TokenTable
|
||||||
from utilities.request import safe_for_redirect
|
from utilities.request import safe_for_redirect
|
||||||
from utilities.string import remove_linebreaks
|
from utilities.string import remove_linebreaks
|
||||||
from utilities.views import register_model_view
|
from utilities.views import register_model_view
|
||||||
@ -328,7 +329,8 @@ class UserTokenListView(LoginRequiredMixin, View):
|
|||||||
|
|
||||||
def get(self, request):
|
def get(self, request):
|
||||||
tokens = UserToken.objects.filter(user=request.user)
|
tokens = UserToken.objects.filter(user=request.user)
|
||||||
table = tables.UserTokenTable(tokens)
|
table = TokenTable(tokens)
|
||||||
|
table.columns.hide('user')
|
||||||
table.configure(request)
|
table.configure(request)
|
||||||
|
|
||||||
return render(request, 'account/token_list.html', {
|
return render(request, 'account/token_list.html', {
|
||||||
|
|||||||
@ -270,7 +270,7 @@ class ActionsColumn(tables.Column):
|
|||||||
if not (self.actions or self.extra_buttons):
|
if not (self.actions or self.extra_buttons):
|
||||||
return ''
|
return ''
|
||||||
# Skip dummy records (e.g. available VLANs or IP ranges replacing individual IPs)
|
# Skip dummy records (e.g. available VLANs or IP ranges replacing individual IPs)
|
||||||
if type(record) is not model or not getattr(record, 'pk', None):
|
if not isinstance(record, model) or not getattr(record, 'pk', None):
|
||||||
return ''
|
return ''
|
||||||
|
|
||||||
if request := getattr(table, 'context', {}).get('request'):
|
if request := getattr(table, 'context', {}).get('request'):
|
||||||
|
|||||||
@ -1,7 +1,6 @@
|
|||||||
import django_tables2 as tables
|
import django_tables2 as tables
|
||||||
from django.utils.translation import gettext as _
|
from django.utils.translation import gettext as _
|
||||||
|
|
||||||
from account.tables import UserTokenTable
|
|
||||||
from netbox.tables import NetBoxTable, columns
|
from netbox.tables import NetBoxTable, columns
|
||||||
from users.models import Group, ObjectPermission, Token, User
|
from users.models import Group, ObjectPermission, Token, User
|
||||||
|
|
||||||
@ -12,19 +11,53 @@ __all__ = (
|
|||||||
'UserTable',
|
'UserTable',
|
||||||
)
|
)
|
||||||
|
|
||||||
|
TOKEN = """<samp><span id="token_{{ record.pk }}">{{ record }}</span></samp>"""
|
||||||
|
|
||||||
class TokenTable(UserTokenTable):
|
COPY_BUTTON = """
|
||||||
|
{% if settings.ALLOW_TOKEN_RETRIEVAL %}
|
||||||
|
{% copy_content record.pk prefix="token_" color="success" %}
|
||||||
|
{% endif %}
|
||||||
|
"""
|
||||||
|
|
||||||
|
|
||||||
|
class TokenTable(NetBoxTable):
|
||||||
user = tables.Column(
|
user = tables.Column(
|
||||||
linkify=True,
|
linkify=True,
|
||||||
verbose_name=_('User')
|
verbose_name=_('User')
|
||||||
)
|
)
|
||||||
|
token = columns.TemplateColumn(
|
||||||
|
verbose_name=_('token'),
|
||||||
|
template_code=TOKEN,
|
||||||
|
)
|
||||||
|
write_enabled = columns.BooleanColumn(
|
||||||
|
verbose_name=_('Write Enabled')
|
||||||
|
)
|
||||||
|
created = columns.DateTimeColumn(
|
||||||
|
timespec='minutes',
|
||||||
|
verbose_name=_('Created'),
|
||||||
|
)
|
||||||
|
expires = columns.DateTimeColumn(
|
||||||
|
timespec='minutes',
|
||||||
|
verbose_name=_('Expires'),
|
||||||
|
)
|
||||||
|
last_used = columns.DateTimeColumn(
|
||||||
|
verbose_name=_('Last Used'),
|
||||||
|
)
|
||||||
|
allowed_ips = columns.ArrayColumn(
|
||||||
|
verbose_name=_('Allowed IPs'),
|
||||||
|
)
|
||||||
|
actions = columns.ActionsColumn(
|
||||||
|
actions=('edit', 'delete'),
|
||||||
|
extra_buttons=COPY_BUTTON
|
||||||
|
)
|
||||||
|
|
||||||
class Meta(NetBoxTable.Meta):
|
class Meta(NetBoxTable.Meta):
|
||||||
model = Token
|
model = Token
|
||||||
fields = (
|
fields = (
|
||||||
'pk', 'id', 'version', 'key', 'pepper_id', 'user', 'description', 'write_enabled', 'created', 'expires',
|
'pk', 'id', 'token', 'version', 'pepper_id', 'user', 'description', 'write_enabled', 'created', 'expires',
|
||||||
'last_used', 'allowed_ips',
|
'last_used', 'allowed_ips',
|
||||||
)
|
)
|
||||||
|
default_columns = ('token', 'version', 'user', 'write_enabled', 'description', 'allowed_ips')
|
||||||
|
|
||||||
|
|
||||||
class UserTable(NetBoxTable):
|
class UserTable(NetBoxTable):
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user