Merge main into feature

This commit is contained in:
Jeremy Stretch
2025-04-10 17:17:21 -04:00
parent bb5057c063
commit fc0acb020f
197 changed files with 63438 additions and 53007 deletions

View File

@@ -5,7 +5,7 @@ from django.utils.translation import gettext as _
from dcim.models import Device, Interface
from ipam.models import IPAddress, RouteTarget, VLAN
from netbox.filtersets import NetBoxModelFilterSet, OrganizationalModelFilterSet
from tenancy.filtersets import TenancyFilterSet
from tenancy.filtersets import ContactModelFilterSet, TenancyFilterSet
from utilities.filters import ContentTypeFilter, MultiValueCharFilter, MultiValueNumberFilter
from virtualization.models import VirtualMachine, VMInterface
from .choices import *
@@ -25,14 +25,14 @@ __all__ = (
)
class TunnelGroupFilterSet(OrganizationalModelFilterSet):
class TunnelGroupFilterSet(OrganizationalModelFilterSet, ContactModelFilterSet):
class Meta:
model = TunnelGroup
fields = ('id', 'name', 'slug', 'description')
class TunnelFilterSet(NetBoxModelFilterSet, TenancyFilterSet):
class TunnelFilterSet(NetBoxModelFilterSet, TenancyFilterSet, ContactModelFilterSet):
status = django_filters.MultipleChoiceFilter(
choices=TunnelStatusChoices
)
@@ -293,7 +293,7 @@ class IPSecProfileFilterSet(NetBoxModelFilterSet):
)
class L2VPNFilterSet(NetBoxModelFilterSet, TenancyFilterSet):
class L2VPNFilterSet(NetBoxModelFilterSet, TenancyFilterSet, ContactModelFilterSet):
type = django_filters.MultipleChoiceFilter(
choices=L2VPNTypeChoices,
null_value=None

View File

@@ -5,7 +5,7 @@ from django.utils.translation import gettext as _
from dcim.models import Device, Region, Site
from ipam.models import RouteTarget, VLAN
from netbox.forms import NetBoxModelFilterSetForm
from tenancy.forms import TenancyFilterForm
from tenancy.forms import ContactModelFilterForm, TenancyFilterForm
from utilities.forms.fields import (
ContentTypeMultipleChoiceField, DynamicModelChoiceField, DynamicModelMultipleChoiceField, TagFilterField,
)
@@ -30,18 +30,23 @@ __all__ = (
)
class TunnelGroupFilterForm(NetBoxModelFilterSetForm):
class TunnelGroupFilterForm(ContactModelFilterForm, NetBoxModelFilterSetForm):
model = TunnelGroup
fieldsets = (
FieldSet('q', 'filter_id', 'tag'),
FieldSet('contact', 'contact_role', 'contact_group', name=_('Contacts')),
)
tag = TagFilterField(model)
class TunnelFilterForm(TenancyFilterForm, NetBoxModelFilterSetForm):
class TunnelFilterForm(ContactModelFilterForm, TenancyFilterForm, NetBoxModelFilterSetForm):
model = Tunnel
fieldsets = (
FieldSet('q', 'filter_id', 'tag'),
FieldSet('status', 'encapsulation', 'tunnel_id', name=_('Tunnel')),
FieldSet('ipsec_profile_id', name=_('Security')),
FieldSet('tenant_group_id', 'tenant_id', name=_('Tenancy')),
FieldSet('contact', 'contact_role', 'contact_group', name=_('Contacts')),
)
status = forms.MultipleChoiceField(
label=_('Status'),
@@ -206,12 +211,13 @@ class IPSecProfileFilterForm(NetBoxModelFilterSetForm):
tag = TagFilterField(model)
class L2VPNFilterForm(TenancyFilterForm, NetBoxModelFilterSetForm):
class L2VPNFilterForm(ContactModelFilterForm, TenancyFilterForm, NetBoxModelFilterSetForm):
model = L2VPN
fieldsets = (
FieldSet('q', 'filter_id', 'tag'),
FieldSet('type', 'status', 'import_target_id', 'export_target_id', name=_('Attributes')),
FieldSet('tenant_group_id', 'tenant_id', name=_('Tenant')),
FieldSet('contact', 'contact_role', 'contact_group', name=_('Contacts')),
)
status = forms.MultipleChoiceField(
label=_('Status'),

View File

@@ -35,7 +35,7 @@ __all__ = (
filters=TunnelGroupFilter,
pagination=True
)
class TunnelGroupType(OrganizationalObjectType):
class TunnelGroupType(ContactsMixin, OrganizationalObjectType):
tunnels: List[Annotated["TunnelType", strawberry.lazy('vpn.graphql.types')]]
@@ -58,7 +58,7 @@ class TunnelTerminationType(CustomFieldsMixin, TagsMixin, ObjectType):
filters=TunnelFilter,
pagination=True
)
class TunnelType(NetBoxObjectType):
class TunnelType(ContactsMixin, NetBoxObjectType):
group: Annotated["TunnelGroupType", strawberry.lazy('vpn.graphql.types')] | None
ipsec_profile: Annotated["IPSecProfileType", strawberry.lazy('vpn.graphql.types')] | None
tenant: Annotated["TenantType", strawberry.lazy('tenancy.graphql.types')] | None

View File

@@ -6,7 +6,7 @@ from django.urls import reverse
from django.utils.translation import gettext_lazy as _
from netbox.models import ChangeLoggedModel, OrganizationalModel, PrimaryModel
from netbox.models.features import CustomFieldsMixin, CustomLinksMixin, TagsMixin
from netbox.models.features import ContactsMixin, CustomFieldsMixin, CustomLinksMixin, TagsMixin
from vpn.choices import *
__all__ = (
@@ -16,7 +16,7 @@ __all__ = (
)
class TunnelGroup(OrganizationalModel):
class TunnelGroup(ContactsMixin, OrganizationalModel):
"""
An administrative grouping of Tunnels. This can be used to correlate peer-to-peer tunnels which form a mesh,
for example.
@@ -27,7 +27,7 @@ class TunnelGroup(OrganizationalModel):
verbose_name_plural = _('tunnel groups')
class Tunnel(PrimaryModel):
class Tunnel(ContactsMixin, PrimaryModel):
name = models.CharField(
verbose_name=_('name'),
max_length=100,