mirror of
https://github.com/netbox-community/netbox.git
synced 2025-07-27 10:58:37 -06:00
13764 Add contacts to IP views
This commit is contained in:
parent
e140b7de78
commit
9052524a54
@ -18,6 +18,7 @@ from ipam.querysets import PrefixQuerySet
|
|||||||
from ipam.validators import DNSValidator
|
from ipam.validators import DNSValidator
|
||||||
from netbox.config import get_config
|
from netbox.config import get_config
|
||||||
from netbox.models import OrganizationalModel, PrimaryModel
|
from netbox.models import OrganizationalModel, PrimaryModel
|
||||||
|
from netbox.models.features import ContactsMixin
|
||||||
|
|
||||||
__all__ = (
|
__all__ = (
|
||||||
'Aggregate',
|
'Aggregate',
|
||||||
@ -74,7 +75,7 @@ class RIR(OrganizationalModel):
|
|||||||
return reverse('ipam:rir', args=[self.pk])
|
return reverse('ipam:rir', args=[self.pk])
|
||||||
|
|
||||||
|
|
||||||
class Aggregate(GetAvailablePrefixesMixin, PrimaryModel):
|
class Aggregate(ContactsMixin, GetAvailablePrefixesMixin, PrimaryModel):
|
||||||
"""
|
"""
|
||||||
An aggregate exists at the root level of the IP address space hierarchy in NetBox. Aggregates are used to organize
|
An aggregate exists at the root level of the IP address space hierarchy in NetBox. Aggregates are used to organize
|
||||||
the hierarchy and track the overall utilization of available address space. Each Aggregate is assigned to a RIR.
|
the hierarchy and track the overall utilization of available address space. Each Aggregate is assigned to a RIR.
|
||||||
@ -206,7 +207,7 @@ class Role(OrganizationalModel):
|
|||||||
return reverse('ipam:role', args=[self.pk])
|
return reverse('ipam:role', args=[self.pk])
|
||||||
|
|
||||||
|
|
||||||
class Prefix(GetAvailablePrefixesMixin, PrimaryModel):
|
class Prefix(ContactsMixin, GetAvailablePrefixesMixin, PrimaryModel):
|
||||||
"""
|
"""
|
||||||
A Prefix represents an IPv4 or IPv6 network, including mask length. Prefixes can optionally be assigned to Sites and
|
A Prefix represents an IPv4 or IPv6 network, including mask length. Prefixes can optionally be assigned to Sites and
|
||||||
VRFs. A Prefix must be assigned a status and may optionally be assigned a used-define Role. A Prefix can also be
|
VRFs. A Prefix must be assigned a status and may optionally be assigned a used-define Role. A Prefix can also be
|
||||||
@ -486,7 +487,7 @@ class Prefix(GetAvailablePrefixesMixin, PrimaryModel):
|
|||||||
return min(utilization, 100)
|
return min(utilization, 100)
|
||||||
|
|
||||||
|
|
||||||
class IPRange(PrimaryModel):
|
class IPRange(ContactsMixin, PrimaryModel):
|
||||||
"""
|
"""
|
||||||
A range of IP addresses, defined by start and end addresses.
|
A range of IP addresses, defined by start and end addresses.
|
||||||
"""
|
"""
|
||||||
@ -695,7 +696,7 @@ class IPRange(PrimaryModel):
|
|||||||
return min(float(child_count) / self.size * 100, 100)
|
return min(float(child_count) / self.size * 100, 100)
|
||||||
|
|
||||||
|
|
||||||
class IPAddress(PrimaryModel):
|
class IPAddress(ContactsMixin, PrimaryModel):
|
||||||
"""
|
"""
|
||||||
An IPAddress represents an individual IPv4 or IPv6 address and its mask. The mask length should match what is
|
An IPAddress represents an individual IPv4 or IPv6 address and its mask. The mask length should match what is
|
||||||
configured in the real world. (Typically, only loopback interfaces are configured with /32 or /128 masks.) Like
|
configured in the real world. (Typically, only loopback interfaces are configured with /32 or /128 masks.) Like
|
||||||
|
@ -9,6 +9,7 @@ from circuits.models import Provider
|
|||||||
from dcim.filtersets import InterfaceFilterSet
|
from dcim.filtersets import InterfaceFilterSet
|
||||||
from dcim.models import Interface, Site
|
from dcim.models import Interface, Site
|
||||||
from netbox.views import generic
|
from netbox.views import generic
|
||||||
|
from tenancy.views import ObjectContactsView
|
||||||
from utilities.query import count_related
|
from utilities.query import count_related
|
||||||
from utilities.tables import get_table_ordering
|
from utilities.tables import get_table_ordering
|
||||||
from utilities.views import ViewTab, register_model_view
|
from utilities.views import ViewTab, register_model_view
|
||||||
@ -405,6 +406,11 @@ class AggregateBulkDeleteView(generic.BulkDeleteView):
|
|||||||
table = tables.AggregateTable
|
table = tables.AggregateTable
|
||||||
|
|
||||||
|
|
||||||
|
@register_model_view(Aggregate, 'contacts')
|
||||||
|
class AggregateContactsView(ObjectContactsView):
|
||||||
|
queryset = Aggregate.objects.all()
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Prefix/VLAN roles
|
# Prefix/VLAN roles
|
||||||
#
|
#
|
||||||
@ -643,6 +649,11 @@ class PrefixBulkDeleteView(generic.BulkDeleteView):
|
|||||||
table = tables.PrefixTable
|
table = tables.PrefixTable
|
||||||
|
|
||||||
|
|
||||||
|
@register_model_view(Prefix, 'contacts')
|
||||||
|
class PrefixContactsView(ObjectContactsView):
|
||||||
|
queryset = Prefix.objects.all()
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# IP Ranges
|
# IP Ranges
|
||||||
#
|
#
|
||||||
@ -726,6 +737,11 @@ class IPRangeBulkDeleteView(generic.BulkDeleteView):
|
|||||||
table = tables.IPRangeTable
|
table = tables.IPRangeTable
|
||||||
|
|
||||||
|
|
||||||
|
@register_model_view(IPRange, 'contacts')
|
||||||
|
class IPRangeContactsView(ObjectContactsView):
|
||||||
|
queryset = IPRange.objects.all()
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# IP addresses
|
# IP addresses
|
||||||
#
|
#
|
||||||
@ -893,6 +909,11 @@ class IPAddressRelatedIPsView(generic.ObjectChildrenView):
|
|||||||
return parent.get_related_ips().restrict(request.user, 'view')
|
return parent.get_related_ips().restrict(request.user, 'view')
|
||||||
|
|
||||||
|
|
||||||
|
@register_model_view(IPAddress, 'contacts')
|
||||||
|
class IPAddressContactsView(ObjectContactsView):
|
||||||
|
queryset = IPAddress.objects.all()
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# VLAN groups
|
# VLAN groups
|
||||||
#
|
#
|
||||||
|
Loading…
Reference in New Issue
Block a user