2022-07-11 15:43:59 -04:00
|
|
|
from .models import Token
|
|
|
|
from netbox.tables import NetBoxTable, columns
|
|
|
|
|
|
|
|
__all__ = (
|
|
|
|
'TokenTable',
|
|
|
|
)
|
|
|
|
|
|
|
|
|
2022-11-02 09:45:00 -07:00
|
|
|
TOKEN = """<samp><span id="token_{{ record.pk }}">{{ record }}</span></samp>"""
|
2022-07-11 15:43:59 -04:00
|
|
|
|
|
|
|
ALLOWED_IPS = """{{ value|join:", " }}"""
|
|
|
|
|
|
|
|
COPY_BUTTON = """
|
2022-11-02 09:45:00 -07:00
|
|
|
{% if settings.ALLOW_TOKEN_RETRIEVAL %}
|
|
|
|
<a class="btn btn-sm btn-success copy-token" data-clipboard-target="#token_{{ record.pk }}" title="Copy to clipboard">
|
|
|
|
<i class="mdi mdi-content-copy"></i>
|
|
|
|
</a>
|
|
|
|
{% endif %}
|
2022-07-11 15:43:59 -04:00
|
|
|
"""
|
|
|
|
|
|
|
|
|
2023-01-25 10:09:37 -05:00
|
|
|
class TokenActionsColumn(columns.ActionsColumn):
|
|
|
|
# Subclass ActionsColumn to disregard permissions for edit & delete buttons
|
|
|
|
actions = {
|
|
|
|
'edit': columns.ActionsItem('Edit', 'pencil', None, 'warning'),
|
|
|
|
'delete': columns.ActionsItem('Delete', 'trash-can-outline', None, 'danger'),
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2022-07-11 15:43:59 -04:00
|
|
|
class TokenTable(NetBoxTable):
|
|
|
|
key = columns.TemplateColumn(
|
|
|
|
template_code=TOKEN
|
|
|
|
)
|
|
|
|
write_enabled = columns.BooleanColumn(
|
|
|
|
verbose_name='Write'
|
|
|
|
)
|
|
|
|
created = columns.DateColumn()
|
|
|
|
expired = columns.DateColumn()
|
|
|
|
last_used = columns.DateTimeColumn()
|
|
|
|
allowed_ips = columns.TemplateColumn(
|
|
|
|
template_code=ALLOWED_IPS
|
|
|
|
)
|
2023-01-25 10:09:37 -05:00
|
|
|
actions = TokenActionsColumn(
|
2022-07-11 15:43:59 -04:00
|
|
|
actions=('edit', 'delete'),
|
|
|
|
extra_buttons=COPY_BUTTON
|
|
|
|
)
|
|
|
|
|
|
|
|
class Meta(NetBoxTable.Meta):
|
|
|
|
model = Token
|
|
|
|
fields = (
|
2022-11-02 09:45:00 -07:00
|
|
|
'pk', 'description', 'key', 'write_enabled', 'created', 'expires', 'last_used', 'allowed_ips',
|
2022-07-11 15:43:59 -04:00
|
|
|
)
|