From 6a265b12888e830a7ed078bb7867df21f67f50f4 Mon Sep 17 00:00:00 2001 From: Arthur Date: Tue, 21 May 2024 14:05:56 -0700 Subject: [PATCH] 14810 add contacts to service --- netbox/ipam/models/services.py | 3 ++- netbox/ipam/views.py | 6 ++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/netbox/ipam/models/services.py b/netbox/ipam/models/services.py index 37b559801..71f34c66c 100644 --- a/netbox/ipam/models/services.py +++ b/netbox/ipam/models/services.py @@ -8,6 +8,7 @@ from django.utils.translation import gettext_lazy as _ from ipam.choices import * from ipam.constants import * from netbox.models import PrimaryModel +from netbox.models.features import ContactsMixin from utilities.data import array_to_string __all__ = ( @@ -62,7 +63,7 @@ class ServiceTemplate(ServiceBase, PrimaryModel): return reverse('ipam:servicetemplate', args=[self.pk]) -class Service(ServiceBase, PrimaryModel): +class Service(ContactsMixin, ServiceBase, PrimaryModel): """ A Service represents a layer-four service (e.g. HTTP or SSH) running on a Device or VirtualMachine. A Service may optionally be tied to one or more specific IPAddresses belonging to its parent. diff --git a/netbox/ipam/views.py b/netbox/ipam/views.py index 2c00c318b..9eaa68aa9 100644 --- a/netbox/ipam/views.py +++ b/netbox/ipam/views.py @@ -9,6 +9,7 @@ from circuits.models import Provider from dcim.filtersets import InterfaceFilterSet from dcim.models import Interface, Site from netbox.views import generic +from tenancy.views import ObjectContactsView from utilities.query import count_related from utilities.tables import get_table_ordering from utilities.views import ViewTab, register_model_view @@ -1259,3 +1260,8 @@ class ServiceBulkDeleteView(generic.BulkDeleteView): queryset = Service.objects.prefetch_related('device', 'virtual_machine') filterset = filtersets.ServiceFilterSet table = tables.ServiceTable + + +@register_model_view(Service, 'contacts') +class ServiceContactsView(ObjectContactsView): + queryset = Service.objects.all()