mirror of
https://github.com/lucaspalomodevelop/netbox-acls.git
synced 2026-03-12 23:27:23 +00:00
215 lines
5.0 KiB
Python
215 lines
5.0 KiB
Python
"""
|
|
Define the object lists / table view for each of the plugin models.
|
|
"""
|
|
|
|
import django_tables2 as tables
|
|
from netbox.tables import ChoiceFieldColumn, NetBoxTable, TemplateColumn, columns
|
|
|
|
from .models import AccessList, ACLExtendedRule, ACLInterfaceAssignment, ACLStandardRule
|
|
|
|
__all__ = (
|
|
"AccessListTable",
|
|
"ACLInterfaceAssignmentTable",
|
|
"ACLStandardRuleTable",
|
|
"ACLExtendedRuleTable",
|
|
)
|
|
|
|
|
|
COL_HOST_ASSIGNMENT = """
|
|
{% if record.assigned_object.device %}
|
|
<a href="{{ record.assigned_object.device.get_absolute_url }}">{{ record.assigned_object.device|placeholder }}</a>
|
|
{% else %}
|
|
<a href="{{ record.assigned_object.virtual_machine.get_absolute_url }}">{{ record.assigned_object.virtual_machine|placeholder }}</a>
|
|
{% endif %}
|
|
"""
|
|
|
|
|
|
class AccessListTable(NetBoxTable):
|
|
"""
|
|
Defines the table view for the AccessList model.
|
|
"""
|
|
|
|
pk = columns.ToggleColumn()
|
|
id = tables.Column(
|
|
linkify=True,
|
|
)
|
|
assigned_object = tables.Column(
|
|
linkify=True,
|
|
orderable=False,
|
|
verbose_name="Assigned Host",
|
|
)
|
|
name = tables.Column(
|
|
linkify=True,
|
|
)
|
|
device = tables.Column(
|
|
linkify=True,
|
|
)
|
|
type = ChoiceFieldColumn()
|
|
default_action = ChoiceFieldColumn()
|
|
rule_count = tables.Column(
|
|
verbose_name="Rule Count",
|
|
)
|
|
tags = columns.TagColumn(
|
|
url_name="plugins:netbox_access_lists:accesslist_list",
|
|
)
|
|
|
|
class Meta(NetBoxTable.Meta):
|
|
model = AccessList
|
|
fields = (
|
|
"pk",
|
|
"id",
|
|
"name",
|
|
"assigned_object",
|
|
"type",
|
|
"rule_count",
|
|
"default_action",
|
|
"comments",
|
|
"actions",
|
|
"tags",
|
|
)
|
|
default_columns = (
|
|
"name",
|
|
"assigned_object",
|
|
"type",
|
|
"rule_count",
|
|
"default_action",
|
|
"tags",
|
|
)
|
|
|
|
|
|
class ACLInterfaceAssignmentTable(NetBoxTable):
|
|
"""
|
|
Defines the table view for the AccessList model.
|
|
"""
|
|
|
|
pk = columns.ToggleColumn()
|
|
id = tables.Column(
|
|
linkify=True,
|
|
)
|
|
access_list = tables.Column(
|
|
linkify=True,
|
|
)
|
|
direction = ChoiceFieldColumn()
|
|
host = tables.TemplateColumn(
|
|
template_code=COL_HOST_ASSIGNMENT,
|
|
)
|
|
assigned_object = tables.Column(
|
|
linkify=True,
|
|
orderable=False,
|
|
verbose_name="Assigned Interface",
|
|
)
|
|
tags = columns.TagColumn(
|
|
url_name="plugins:netbox_access_lists:aclinterfaceassignment_list",
|
|
)
|
|
|
|
class Meta(NetBoxTable.Meta):
|
|
model = ACLInterfaceAssignment
|
|
fields = (
|
|
"pk",
|
|
"id",
|
|
"access_list",
|
|
"direction",
|
|
"host",
|
|
"assigned_object",
|
|
"tags",
|
|
)
|
|
default_columns = (
|
|
"id",
|
|
"access_list",
|
|
"direction",
|
|
"host",
|
|
"assigned_object",
|
|
"tags",
|
|
)
|
|
|
|
|
|
class ACLStandardRuleTable(NetBoxTable):
|
|
"""
|
|
Defines the table view for the ACLStandardRule model.
|
|
"""
|
|
|
|
access_list = tables.Column(
|
|
linkify=True,
|
|
)
|
|
index = tables.Column(
|
|
linkify=True,
|
|
)
|
|
action = ChoiceFieldColumn()
|
|
tags = columns.TagColumn(
|
|
url_name="plugins:netbox_access_lists:aclstandardrule_list",
|
|
)
|
|
|
|
class Meta(NetBoxTable.Meta):
|
|
model = ACLStandardRule
|
|
fields = (
|
|
"pk",
|
|
"id",
|
|
"access_list",
|
|
"index",
|
|
"action",
|
|
"actions",
|
|
"remark",
|
|
"tags",
|
|
"description",
|
|
"source_prefix",
|
|
)
|
|
default_columns = (
|
|
"access_list",
|
|
"index",
|
|
"action",
|
|
"actions",
|
|
"remark",
|
|
"source_prefix",
|
|
"tags",
|
|
)
|
|
|
|
|
|
class ACLExtendedRuleTable(NetBoxTable):
|
|
"""
|
|
Defines the table view for the ACLExtendedRule model.
|
|
"""
|
|
|
|
access_list = tables.Column(
|
|
linkify=True,
|
|
)
|
|
index = tables.Column(
|
|
linkify=True,
|
|
)
|
|
action = ChoiceFieldColumn()
|
|
tags = columns.TagColumn(
|
|
url_name="plugins:netbox_access_lists:aclextendedrule_list",
|
|
)
|
|
protocol = ChoiceFieldColumn()
|
|
|
|
class Meta(NetBoxTable.Meta):
|
|
model = ACLExtendedRule
|
|
fields = (
|
|
"pk",
|
|
"id",
|
|
"access_list",
|
|
"index",
|
|
"action",
|
|
"actions",
|
|
"remark",
|
|
"tags",
|
|
"description",
|
|
"source_prefix",
|
|
"source_ports",
|
|
"destination_prefix",
|
|
"destination_ports",
|
|
"protocol",
|
|
)
|
|
default_columns = (
|
|
"access_list",
|
|
"index",
|
|
"action",
|
|
"actions",
|
|
"remark",
|
|
"tags",
|
|
"source_prefix",
|
|
"source_ports",
|
|
"destination_prefix",
|
|
"destination_ports",
|
|
"protocol",
|
|
)
|