Misc cleanup

This commit is contained in:
Jeremy Stretch 2023-07-25 11:55:06 -04:00
parent 41756eedeb
commit 2e61f9443c
6 changed files with 26 additions and 17 deletions

View File

@ -26,6 +26,7 @@ __all__ = (
'ObjectPermission',
'Token',
'UserConfig',
'UserToken',
)

View File

@ -1,4 +1,5 @@
import django_tables2 as tables
from django.utils.translation import gettext as _
from netbox.tables import NetBoxTable, columns
from users.models import NetBoxGroup, NetBoxUser, ObjectPermission, Token, UserToken
@ -31,28 +32,30 @@ class TokenActionsColumn(columns.ActionsColumn):
class UserTokenTable(NetBoxTable):
"""
Table for users to manager their own API tokens under account views.
"""
key = columns.TemplateColumn(
verbose_name='Key',
verbose_name=_('Key'),
template_code=TOKEN,
)
write_enabled = columns.BooleanColumn(
verbose_name='Write'
verbose_name=_('Write Enabled')
)
created = columns.DateColumn(
verbose_name='Created',
verbose_name=_('Created'),
)
expired = columns.DateColumn(
verbose_name='Expired',
expires = columns.DateColumn(
verbose_name=_('Expires'),
)
last_used = columns.DateTimeColumn(
verbose_name='Last used',
verbose_name=_('Last Used'),
)
allowed_ips = columns.TemplateColumn(
verbose_name='Allowed IPs',
verbose_name=_('Allowed IPs'),
template_code=ALLOWED_IPS
)
actions = TokenActionsColumn(
verbose_name='Actions',
actions=('edit', 'delete'),
extra_buttons=COPY_BUTTON
)
@ -65,6 +68,13 @@ class UserTokenTable(NetBoxTable):
class TokenTable(UserTokenTable):
"""
General-purpose table for API token management.
"""
user = tables.Column(
linkify=True,
verbose_name=_('User')
)
class Meta(NetBoxTable.Meta):
model = Token

View File

@ -2,7 +2,7 @@ from django.contrib.auth.models import Group
from django.contrib.contenttypes.models import ContentType
from users.models import *
from utilities.testing import ViewTestCases
from utilities.testing import ViewTestCases, create_test_user
class UserTestCase(
@ -167,11 +167,9 @@ class TokenTestCase(
@classmethod
def setUpTestData(cls):
users = (
NetBoxUser(username='username1', first_name='first1', last_name='last1', email='user1@foo.com', password='pass1xxx'),
NetBoxUser(username='username2', first_name='first2', last_name='last2', email='user2@foo.com', password='pass2xxx'),
create_test_user('User 1'),
create_test_user('User 2'),
)
NetBoxUser.objects.bulk_create(users)
tokens = (
Token(key='123456790123456789012345678901234567890A', user=users[0]),
Token(key='123456790123456789012345678901234567890B', user=users[0]),

View File

@ -259,7 +259,7 @@ class UserTokenListView(LoginRequiredMixin, View):
table = tables.UserTokenTable(tokens)
table.configure(request)
return render(request, 'users/account/usertoken_list.html', {
return render(request, 'users/account/token_list.html', {
'tokens': tokens,
'active_tab': 'api-tokens',
'table': table,
@ -270,10 +270,10 @@ class UserTokenListView(LoginRequiredMixin, View):
class UserTokenView(LoginRequiredMixin, View):
def get(self, request, pk):
token = get_object_or_404(UserToken, pk=pk)
token = get_object_or_404(UserToken.objects.filter(user=request.user), pk=pk)
key = token.key if settings.ALLOW_TOKEN_RETRIEVAL else None
return render(request, 'users/account/usertoken.html', {
return render(request, 'users/account/token.html', {
'object': token,
'key': key,
})
@ -312,7 +312,7 @@ class UserTokenEditView(LoginRequiredMixin, View):
messages.success(request, msg)
if not pk and not settings.ALLOW_TOKEN_RETRIEVAL:
return render(request, 'users/account/usertoken.html', {
return render(request, 'users/account/token.html', {
'object': token,
'key': token.key,
'return_url': reverse('users:token_list'),