diff --git a/netbox/account/tables.py b/netbox/account/tables.py
new file mode 100644
index 000000000..6655a7f82
--- /dev/null
+++ b/netbox/account/tables.py
@@ -0,0 +1,55 @@
+from django.utils.translation import gettext as _
+
+from account.models import UserToken
+from netbox.tables import NetBoxTable, columns
+
+__all__ = (
+ 'UserTokenTable',
+)
+
+
+TOKEN = """{{ record }}"""
+
+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.DateColumn(
+ verbose_name=_('Created'),
+ )
+ expires = columns.DateColumn(
+ 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', 'key', 'description', 'write_enabled', 'created', 'expires', 'last_used', 'allowed_ips',
+ )
diff --git a/netbox/users/tables.py b/netbox/users/tables.py
index 8702b4123..5a3210afe 100644
--- a/netbox/users/tables.py
+++ b/netbox/users/tables.py
@@ -1,7 +1,7 @@
import django_tables2 as tables
from django.utils.translation import gettext as _
-from account.models import UserToken
+from account.tables import UserTokenTable
from netbox.tables import NetBoxTable, columns
from users.models import NetBoxGroup, NetBoxUser, ObjectPermission, Token
@@ -13,58 +13,7 @@ __all__ = (
)
-TOKEN = """{{ record }}"""
-
-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.DateColumn(
- verbose_name=_('Created'),
- )
- expires = columns.DateColumn(
- verbose_name=_('Expires'),
- )
- last_used = columns.DateTimeColumn(
- verbose_name=_('Last Used'),
- )
- allowed_ips = columns.TemplateColumn(
- verbose_name=_('Allowed IPs'),
- template_code=ALLOWED_IPS
- )
- # TODO: Fix permissions evaluation & viewname resolution
- actions = columns.ActionsColumn(
- actions=('edit', 'delete'),
- extra_buttons=COPY_BUTTON
- )
-
- class Meta(NetBoxTable.Meta):
- model = UserToken
- fields = (
- 'pk', 'id', 'key', 'description', 'write_enabled', 'created', 'expires', 'last_used', 'allowed_ips',
- )
-
-
class TokenTable(UserTokenTable):
- """
- General-purpose table for API token management.
- """
user = tables.Column(
linkify=True,
verbose_name=_('User')