Remove UserToken proxy model

This commit is contained in:
Jeremy Stretch 2023-07-25 10:26:31 -04:00
parent 43d2ba6fc8
commit d0c3c3f93b
9 changed files with 36 additions and 68 deletions

View File

@ -416,7 +416,7 @@ ADMIN_MENU = Menu(
label=_('Tokens'), label=_('Tokens'),
items=( items=(
MenuItem( MenuItem(
link='users:usertoken_list', link='users:token_list',
link_text=_('Tokens'), link_text=_('Tokens'),
permissions=['users.view_token'] permissions=['users.view_token']
), ),

View File

@ -42,5 +42,5 @@ class UserTokenImportForm(CSVModelForm):
) )
class Meta: class Meta:
model = UserToken model = Token
fields = ('key', 'user', 'expires', 'description',) fields = ('key', 'user', 'expires', 'description',)

View File

@ -1,23 +0,0 @@
# Generated by Django 4.2.2 on 2023-07-06 05:10
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('users', '0004_netboxgroup_netboxuser'),
]
operations = [
migrations.CreateModel(
name='UserToken',
fields=[],
options={
'verbose_name': 'Token',
'proxy': True,
'indexes': [],
'constraints': [],
},
bases=('users.token',),
),
]

View File

@ -26,7 +26,6 @@ __all__ = (
'ObjectPermission', 'ObjectPermission',
'Token', 'Token',
'UserConfig', 'UserConfig',
'UserToken',
) )
@ -274,13 +273,20 @@ class Token(models.Model):
blank=True, blank=True,
null=True, null=True,
verbose_name='Allowed IPs', verbose_name='Allowed IPs',
help_text=_('Allowed IPv4/IPv6 networks from where the token can be used. Leave blank for no restrictions. ' help_text=_(
'Ex: "10.1.1.0/24, 192.168.10.16/32, 2001:DB8:1::/64"'), 'Allowed IPv4/IPv6 networks from where the token can be used. Leave blank for no restrictions. '
'Ex: "10.1.1.0/24, 192.168.10.16/32, 2001:DB8:1::/64"'
),
) )
objects = RestrictedQuerySet.as_manager()
def __str__(self): def __str__(self):
return self.key if settings.ALLOW_TOKEN_RETRIEVAL else self.partial return self.key if settings.ALLOW_TOKEN_RETRIEVAL else self.partial
def get_absolute_url(self):
return reverse('users:token', args=[self.pk])
@property @property
def partial(self): def partial(self):
return f'**********************************{self.key[-6:]}' if self.key else '' return f'**********************************{self.key[-6:]}' if self.key else ''
@ -315,20 +321,6 @@ class Token(models.Model):
return False return False
class UserToken(Token):
"""
Proxy Token for NetBox admin UI
"""
class Meta:
verbose_name = 'Token'
proxy = True
def get_absolute_url(self):
return reverse('users:usertoken', args=[self.pk])
objects = RestrictedQuerySet.as_manager()
# #
# Permissions # Permissions
# #

View File

@ -1,7 +1,7 @@
import django_tables2 as tables import django_tables2 as tables
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
__all__ = ( __all__ = (
'GroupTable', 'GroupTable',
@ -84,7 +84,7 @@ class UserTokenTable(NetBoxTable):
) )
class Meta(NetBoxTable.Meta): class Meta(NetBoxTable.Meta):
model = UserToken model = Token
fields = [ fields = [
'pk', 'id', 'key', 'user', 'description', 'write_enabled', 'created', 'expires', 'last_used', 'allowed_ips', 'pk', 'id', 'key', 'user', 'description', 'write_enabled', 'created', 'expires', 'last_used', 'allowed_ips',
] ]

View File

@ -161,7 +161,7 @@ class TokenTestCase(
ViewTestCases.BulkEditObjectsViewTestCase, ViewTestCases.BulkEditObjectsViewTestCase,
ViewTestCases.BulkDeleteObjectsViewTestCase, ViewTestCases.BulkDeleteObjectsViewTestCase,
): ):
model = UserToken model = Token
maxDiff = None maxDiff = None
@classmethod @classmethod
@ -173,11 +173,11 @@ class TokenTestCase(
NetBoxUser.objects.bulk_create(users) NetBoxUser.objects.bulk_create(users)
tokens = ( tokens = (
UserToken(key='123456790123456789012345678901234567890A', user=users[0]), Token(key='123456790123456789012345678901234567890A', user=users[0]),
UserToken(key='123456790123456789012345678901234567890B', user=users[0]), Token(key='123456790123456789012345678901234567890B', user=users[0]),
UserToken(key='123456790123456789012345678901234567890C', user=users[1]), Token(key='123456790123456789012345678901234567890C', user=users[1]),
) )
UserToken.objects.bulk_create(tokens) Token.objects.bulk_create(tokens)
cls.form_data = { cls.form_data = {
'user': users[0].pk, 'user': users[0].pk,

View File

@ -16,12 +16,12 @@ urlpatterns = [
path('api-tokens/<int:pk>/', include(get_model_urls('users', 'token'))), path('api-tokens/<int:pk>/', include(get_model_urls('users', 'token'))),
# Tokens # Tokens
path('user-tokens/', views.UserTokenListView.as_view(), name='usertoken_list'), path('tokens/', views.UserTokenListView.as_view(), name='token_list'),
path('user-tokens/add/', views.UserTokenEditView.as_view(), name='usertoken_add'), path('tokens/add/', views.UserTokenEditView.as_view(), name='token_add'),
path('user-tokens/import/', views.UserTokenBulkImportView.as_view(), name='usertoken_import'), path('tokens/import/', views.UserTokenBulkImportView.as_view(), name='token_import'),
path('user-tokens/edit/', views.UserTokenBulkEditView.as_view(), name='usertoken_bulk_edit'), path('tokens/edit/', views.UserTokenBulkEditView.as_view(), name='token_bulk_edit'),
path('user-tokens/delete/', views.UserTokenBulkDeleteView.as_view(), name='usertoken_bulk_delete'), path('tokens/delete/', views.UserTokenBulkDeleteView.as_view(), name='token_bulk_delete'),
path('user-tokens/<int:pk>/', include(get_model_urls('users', 'usertoken'))), path('tokens/<int:pk>/', include(get_model_urls('users', 'token'))),
# Users # Users
path('users/', views.UserListView.as_view(), name='netboxuser_list'), path('users/', views.UserListView.as_view(), name='netboxuser_list'),

View File

@ -24,7 +24,7 @@ from netbox.views import generic
from utilities.forms import ConfirmationForm from utilities.forms import ConfirmationForm
from utilities.views import register_model_view from utilities.views import register_model_view
from . import filtersets, forms, tables from . import filtersets, forms, tables
from .models import Token, UserConfig, NetBoxGroup, NetBoxUser, ObjectPermission, UserToken from .models import Token, UserConfig, NetBoxGroup, NetBoxUser, ObjectPermission
# #
@ -360,44 +360,44 @@ class TokenDeleteView(LoginRequiredMixin, View):
# #
class UserTokenListView(generic.ObjectListView): class UserTokenListView(generic.ObjectListView):
queryset = UserToken.objects.all() queryset = Token.objects.all()
filterset = filtersets.UserTokenFilterSet filterset = filtersets.UserTokenFilterSet
filterset_form = forms.UserTokenFilterForm filterset_form = forms.UserTokenFilterForm
table = tables.UserTokenTable table = tables.UserTokenTable
@register_model_view(UserToken) @register_model_view(Token)
class UserTokenView(generic.ObjectView): class UserTokenView(generic.ObjectView):
queryset = UserToken.objects.all() queryset = Token.objects.all()
def get_extra_context(self, request, instance): def get_extra_context(self, request, instance):
return {} return {}
@register_model_view(UserToken, 'edit') @register_model_view(Token, 'edit')
class UserTokenEditView(generic.ObjectEditView): class UserTokenEditView(generic.ObjectEditView):
queryset = UserToken.objects.all() queryset = Token.objects.all()
form = forms.UserTokenForm form = forms.UserTokenForm
@register_model_view(UserToken, 'delete') @register_model_view(Token, 'delete')
class UserTokenDeleteView(generic.ObjectDeleteView): class UserTokenDeleteView(generic.ObjectDeleteView):
queryset = UserToken.objects.all() queryset = Token.objects.all()
class UserTokenBulkImportView(generic.BulkImportView): class UserTokenBulkImportView(generic.BulkImportView):
queryset = UserToken.objects.all() queryset = Token.objects.all()
model_form = forms.UserTokenImportForm model_form = forms.UserTokenImportForm
class UserTokenBulkEditView(generic.BulkEditView): class UserTokenBulkEditView(generic.BulkEditView):
queryset = UserToken.objects.all() queryset = Token.objects.all()
table = tables.TokenTable table = tables.TokenTable
form = forms.UserTokenBulkEditForm form = forms.UserTokenBulkEditForm
class UserTokenBulkDeleteView(generic.BulkDeleteView): class UserTokenBulkDeleteView(generic.BulkDeleteView):
queryset = UserToken.objects.all() queryset = Token.objects.all()
table = tables.UserTokenTable table = tables.UserTokenTable
@ -459,7 +459,6 @@ class UserBulkDeleteView(generic.BulkDeleteView):
# Groups # Groups
# #
class GroupListView(generic.ObjectListView): class GroupListView(generic.ObjectListView):
queryset = NetBoxGroup.objects.annotate(users_count=Count('user')) queryset = NetBoxGroup.objects.annotate(users_count=Count('user'))
filterset = filtersets.GroupFilterSet filterset = filtersets.GroupFilterSet
@ -494,11 +493,11 @@ class GroupBulkDeleteView(generic.BulkDeleteView):
filterset = filtersets.GroupFilterSet filterset = filtersets.GroupFilterSet
table = tables.GroupTable table = tables.GroupTable
# #
# ObjectPermissions # ObjectPermissions
# #
class ObjectPermissionListView(generic.ObjectListView): class ObjectPermissionListView(generic.ObjectListView):
queryset = ObjectPermission.objects.all() queryset = ObjectPermission.objects.all()
filterset = filtersets.ObjectPermissionFilterSet filterset = filtersets.ObjectPermissionFilterSet