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')