mirror of
https://github.com/netbox-community/netbox.git
synced 2025-08-25 08:46:10 -06:00
Misc cleanup
This commit is contained in:
parent
41756eedeb
commit
2e61f9443c
@ -26,6 +26,7 @@ __all__ = (
|
|||||||
'ObjectPermission',
|
'ObjectPermission',
|
||||||
'Token',
|
'Token',
|
||||||
'UserConfig',
|
'UserConfig',
|
||||||
|
'UserToken',
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
import django_tables2 as tables
|
import django_tables2 as tables
|
||||||
|
from django.utils.translation import gettext as _
|
||||||
|
|
||||||
from netbox.tables import NetBoxTable, columns
|
from netbox.tables import NetBoxTable, columns
|
||||||
from users.models import NetBoxGroup, NetBoxUser, ObjectPermission, Token, UserToken
|
from users.models import NetBoxGroup, NetBoxUser, ObjectPermission, Token, UserToken
|
||||||
@ -31,28 +32,30 @@ class TokenActionsColumn(columns.ActionsColumn):
|
|||||||
|
|
||||||
|
|
||||||
class UserTokenTable(NetBoxTable):
|
class UserTokenTable(NetBoxTable):
|
||||||
|
"""
|
||||||
|
Table for users to manager their own API tokens under account views.
|
||||||
|
"""
|
||||||
key = columns.TemplateColumn(
|
key = columns.TemplateColumn(
|
||||||
verbose_name='Key',
|
verbose_name=_('Key'),
|
||||||
template_code=TOKEN,
|
template_code=TOKEN,
|
||||||
)
|
)
|
||||||
write_enabled = columns.BooleanColumn(
|
write_enabled = columns.BooleanColumn(
|
||||||
verbose_name='Write'
|
verbose_name=_('Write Enabled')
|
||||||
)
|
)
|
||||||
created = columns.DateColumn(
|
created = columns.DateColumn(
|
||||||
verbose_name='Created',
|
verbose_name=_('Created'),
|
||||||
)
|
)
|
||||||
expired = columns.DateColumn(
|
expires = columns.DateColumn(
|
||||||
verbose_name='Expired',
|
verbose_name=_('Expires'),
|
||||||
)
|
)
|
||||||
last_used = columns.DateTimeColumn(
|
last_used = columns.DateTimeColumn(
|
||||||
verbose_name='Last used',
|
verbose_name=_('Last Used'),
|
||||||
)
|
)
|
||||||
allowed_ips = columns.TemplateColumn(
|
allowed_ips = columns.TemplateColumn(
|
||||||
verbose_name='Allowed IPs',
|
verbose_name=_('Allowed IPs'),
|
||||||
template_code=ALLOWED_IPS
|
template_code=ALLOWED_IPS
|
||||||
)
|
)
|
||||||
actions = TokenActionsColumn(
|
actions = TokenActionsColumn(
|
||||||
verbose_name='Actions',
|
|
||||||
actions=('edit', 'delete'),
|
actions=('edit', 'delete'),
|
||||||
extra_buttons=COPY_BUTTON
|
extra_buttons=COPY_BUTTON
|
||||||
)
|
)
|
||||||
@ -65,6 +68,13 @@ class UserTokenTable(NetBoxTable):
|
|||||||
|
|
||||||
|
|
||||||
class TokenTable(UserTokenTable):
|
class TokenTable(UserTokenTable):
|
||||||
|
"""
|
||||||
|
General-purpose table for API token management.
|
||||||
|
"""
|
||||||
|
user = tables.Column(
|
||||||
|
linkify=True,
|
||||||
|
verbose_name=_('User')
|
||||||
|
)
|
||||||
|
|
||||||
class Meta(NetBoxTable.Meta):
|
class Meta(NetBoxTable.Meta):
|
||||||
model = Token
|
model = Token
|
||||||
|
@ -2,7 +2,7 @@ from django.contrib.auth.models import Group
|
|||||||
from django.contrib.contenttypes.models import ContentType
|
from django.contrib.contenttypes.models import ContentType
|
||||||
|
|
||||||
from users.models import *
|
from users.models import *
|
||||||
from utilities.testing import ViewTestCases
|
from utilities.testing import ViewTestCases, create_test_user
|
||||||
|
|
||||||
|
|
||||||
class UserTestCase(
|
class UserTestCase(
|
||||||
@ -167,11 +167,9 @@ class TokenTestCase(
|
|||||||
@classmethod
|
@classmethod
|
||||||
def setUpTestData(cls):
|
def setUpTestData(cls):
|
||||||
users = (
|
users = (
|
||||||
NetBoxUser(username='username1', first_name='first1', last_name='last1', email='user1@foo.com', password='pass1xxx'),
|
create_test_user('User 1'),
|
||||||
NetBoxUser(username='username2', first_name='first2', last_name='last2', email='user2@foo.com', password='pass2xxx'),
|
create_test_user('User 2'),
|
||||||
)
|
)
|
||||||
NetBoxUser.objects.bulk_create(users)
|
|
||||||
|
|
||||||
tokens = (
|
tokens = (
|
||||||
Token(key='123456790123456789012345678901234567890A', user=users[0]),
|
Token(key='123456790123456789012345678901234567890A', user=users[0]),
|
||||||
Token(key='123456790123456789012345678901234567890B', user=users[0]),
|
Token(key='123456790123456789012345678901234567890B', user=users[0]),
|
||||||
|
@ -259,7 +259,7 @@ class UserTokenListView(LoginRequiredMixin, View):
|
|||||||
table = tables.UserTokenTable(tokens)
|
table = tables.UserTokenTable(tokens)
|
||||||
table.configure(request)
|
table.configure(request)
|
||||||
|
|
||||||
return render(request, 'users/account/usertoken_list.html', {
|
return render(request, 'users/account/token_list.html', {
|
||||||
'tokens': tokens,
|
'tokens': tokens,
|
||||||
'active_tab': 'api-tokens',
|
'active_tab': 'api-tokens',
|
||||||
'table': table,
|
'table': table,
|
||||||
@ -270,10 +270,10 @@ class UserTokenListView(LoginRequiredMixin, View):
|
|||||||
class UserTokenView(LoginRequiredMixin, View):
|
class UserTokenView(LoginRequiredMixin, View):
|
||||||
|
|
||||||
def get(self, request, pk):
|
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
|
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,
|
'object': token,
|
||||||
'key': key,
|
'key': key,
|
||||||
})
|
})
|
||||||
@ -312,7 +312,7 @@ class UserTokenEditView(LoginRequiredMixin, View):
|
|||||||
messages.success(request, msg)
|
messages.success(request, msg)
|
||||||
|
|
||||||
if not pk and not settings.ALLOW_TOKEN_RETRIEVAL:
|
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,
|
'object': token,
|
||||||
'key': token.key,
|
'key': token.key,
|
||||||
'return_url': reverse('users:token_list'),
|
'return_url': reverse('users:token_list'),
|
||||||
|
Loading…
Reference in New Issue
Block a user