mirror of
https://github.com/netbox-community/netbox.git
synced 2025-08-25 08:46:10 -06:00
Remove UserToken proxy model
This commit is contained in:
parent
43d2ba6fc8
commit
d0c3c3f93b
@ -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']
|
||||||
),
|
),
|
||||||
|
@ -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',)
|
||||||
|
@ -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',),
|
|
||||||
),
|
|
||||||
]
|
|
@ -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
|
||||||
#
|
#
|
||||||
|
@ -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',
|
||||||
]
|
]
|
||||||
|
@ -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,
|
||||||
|
@ -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'),
|
||||||
|
@ -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
|
||||||
|
Loading…
Reference in New Issue
Block a user