|
@@ -19,14 +19,22 @@ __all__ = (
|
|
|
|
|
|
|
|
AVAILABLE_LABEL = mark_safe('<span class="badge bg-success">Available</span>')
|
|
AVAILABLE_LABEL = mark_safe('<span class="badge bg-success">Available</span>')
|
|
|
|
|
|
|
|
|
|
+AGGREGATE_COPY_BUTTON = """
|
|
|
|
|
+{% copy_content record.pk prefix="aggregate_" %}
|
|
|
|
|
+"""
|
|
|
|
|
+
|
|
|
PREFIX_LINK = """
|
|
PREFIX_LINK = """
|
|
|
{% if record.pk %}
|
|
{% if record.pk %}
|
|
|
- <a href="{{ record.get_absolute_url }}">{{ record.prefix }}</a>
|
|
|
|
|
|
|
+ <a href="{{ record.get_absolute_url }}" id="prefix_{{ record.pk }}">{{ record.prefix }}</a>
|
|
|
{% else %}
|
|
{% else %}
|
|
|
<a href="{% url 'ipam:prefix_add' %}?prefix={{ record }}{% if object.vrf %}&vrf={{ object.vrf.pk }}{% endif %}{% if object.site %}&site={{ object.site.pk }}{% endif %}{% if object.tenant %}&tenant_group={{ object.tenant.group.pk }}&tenant={{ object.tenant.pk }}{% endif %}">{{ record.prefix }}</a>
|
|
<a href="{% url 'ipam:prefix_add' %}?prefix={{ record }}{% if object.vrf %}&vrf={{ object.vrf.pk }}{% endif %}{% if object.site %}&site={{ object.site.pk }}{% endif %}{% if object.tenant %}&tenant_group={{ object.tenant.group.pk }}&tenant={{ object.tenant.pk }}{% endif %}">{{ record.prefix }}</a>
|
|
|
{% endif %}
|
|
{% endif %}
|
|
|
"""
|
|
"""
|
|
|
|
|
|
|
|
|
|
+PREFIX_COPY_BUTTON = """
|
|
|
|
|
+{% copy_content record.pk prefix="prefix_" %}
|
|
|
|
|
+"""
|
|
|
|
|
+
|
|
|
PREFIX_LINK_WITH_DEPTH = """
|
|
PREFIX_LINK_WITH_DEPTH = """
|
|
|
{% load helpers %}
|
|
{% load helpers %}
|
|
|
{% if record.depth %}
|
|
{% if record.depth %}
|
|
@@ -40,7 +48,7 @@ PREFIX_LINK_WITH_DEPTH = """
|
|
|
|
|
|
|
|
IPADDRESS_LINK = """
|
|
IPADDRESS_LINK = """
|
|
|
{% if record.pk %}
|
|
{% if record.pk %}
|
|
|
- <a href="{{ record.get_absolute_url }}">{{ record.address }}</a>
|
|
|
|
|
|
|
+ <a href="{{ record.get_absolute_url }}" id="ipaddress_{{ record.pk }}">{{ record.address }}</a>
|
|
|
{% elif perms.ipam.add_ipaddress %}
|
|
{% elif perms.ipam.add_ipaddress %}
|
|
|
<a href="{% url 'ipam:ipaddress_add' %}?address={{ record.1 }}{% if object.vrf %}&vrf={{ object.vrf.pk }}{% endif %}{% if object.tenant %}&tenant={{ object.tenant.pk }}{% endif %}" class="btn btn-sm btn-success">{% if record.0 <= 65536 %}{{ record.0 }}{% else %}Many{% endif %} IP{{ record.0|pluralize }} available</a>
|
|
<a href="{% url 'ipam:ipaddress_add' %}?address={{ record.1 }}{% if object.vrf %}&vrf={{ object.vrf.pk }}{% endif %}{% if object.tenant %}&tenant={{ object.tenant.pk }}{% endif %}" class="btn btn-sm btn-success">{% if record.0 <= 65536 %}{{ record.0 }}{% else %}Many{% endif %} IP{{ record.0|pluralize }} available</a>
|
|
|
{% else %}
|
|
{% else %}
|
|
@@ -48,6 +56,10 @@ IPADDRESS_LINK = """
|
|
|
{% endif %}
|
|
{% endif %}
|
|
|
"""
|
|
"""
|
|
|
|
|
|
|
|
|
|
+IPADDRESS_COPY_BUTTON = """
|
|
|
|
|
+{% copy_content record.pk prefix="ipaddress_" %}
|
|
|
|
|
+"""
|
|
|
|
|
+
|
|
|
IPADDRESS_ASSIGN_LINK = """
|
|
IPADDRESS_ASSIGN_LINK = """
|
|
|
<a href="{% url 'ipam:ipaddress_edit' pk=record.pk %}?{% if request.GET.interface %}interface={{ request.GET.interface }}{% elif request.GET.vminterface %}vminterface={{ request.GET.vminterface }}{% endif %}&return_url={{ request.GET.return_url }}">{{ record }}</a>
|
|
<a href="{% url 'ipam:ipaddress_edit' pk=record.pk %}?{% if request.GET.interface %}interface={{ request.GET.interface }}{% elif request.GET.vminterface %}vminterface={{ request.GET.vminterface }}{% endif %}&return_url={{ request.GET.return_url }}">{{ record }}</a>
|
|
|
"""
|
|
"""
|
|
@@ -99,7 +111,11 @@ class RIRTable(NetBoxTable):
|
|
|
class AggregateTable(TenancyColumnsMixin, NetBoxTable):
|
|
class AggregateTable(TenancyColumnsMixin, NetBoxTable):
|
|
|
prefix = tables.Column(
|
|
prefix = tables.Column(
|
|
|
linkify=True,
|
|
linkify=True,
|
|
|
- verbose_name='Aggregate'
|
|
|
|
|
|
|
+ verbose_name='Aggregate',
|
|
|
|
|
+ attrs={
|
|
|
|
|
+ # Allow the aggregate to be copied to the clipboard
|
|
|
|
|
+ 'a': {'id': lambda record: f"aggregate_{record.pk}"}
|
|
|
|
|
+ }
|
|
|
)
|
|
)
|
|
|
date_added = tables.DateColumn(
|
|
date_added = tables.DateColumn(
|
|
|
format="Y-m-d",
|
|
format="Y-m-d",
|
|
@@ -116,6 +132,9 @@ class AggregateTable(TenancyColumnsMixin, NetBoxTable):
|
|
|
tags = columns.TagColumn(
|
|
tags = columns.TagColumn(
|
|
|
url_name='ipam:aggregate_list'
|
|
url_name='ipam:aggregate_list'
|
|
|
)
|
|
)
|
|
|
|
|
+ actions = columns.ActionsColumn(
|
|
|
|
|
+ extra_buttons=AGGREGATE_COPY_BUTTON
|
|
|
|
|
+ )
|
|
|
|
|
|
|
|
class Meta(NetBoxTable.Meta):
|
|
class Meta(NetBoxTable.Meta):
|
|
|
model = Aggregate
|
|
model = Aggregate
|
|
@@ -242,6 +261,9 @@ class PrefixTable(TenancyColumnsMixin, NetBoxTable):
|
|
|
tags = columns.TagColumn(
|
|
tags = columns.TagColumn(
|
|
|
url_name='ipam:prefix_list'
|
|
url_name='ipam:prefix_list'
|
|
|
)
|
|
)
|
|
|
|
|
+ actions = columns.ActionsColumn(
|
|
|
|
|
+ extra_buttons=PREFIX_COPY_BUTTON
|
|
|
|
|
+ )
|
|
|
|
|
|
|
|
class Meta(NetBoxTable.Meta):
|
|
class Meta(NetBoxTable.Meta):
|
|
|
model = Prefix
|
|
model = Prefix
|
|
@@ -348,6 +370,9 @@ class IPAddressTable(TenancyColumnsMixin, NetBoxTable):
|
|
|
tags = columns.TagColumn(
|
|
tags = columns.TagColumn(
|
|
|
url_name='ipam:ipaddress_list'
|
|
url_name='ipam:ipaddress_list'
|
|
|
)
|
|
)
|
|
|
|
|
+ actions = columns.ActionsColumn(
|
|
|
|
|
+ extra_buttons=IPADDRESS_COPY_BUTTON
|
|
|
|
|
+ )
|
|
|
|
|
|
|
|
class Meta(NetBoxTable.Meta):
|
|
class Meta(NetBoxTable.Meta):
|
|
|
model = IPAddress
|
|
model = IPAddress
|