Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

15794 Make "related objects" dynamic #15876

Merged
36 changes: 12 additions & 24 deletions netbox/circuits/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
from tenancy.views import ObjectContactsView
from utilities.forms import ConfirmationForm
from utilities.utils import count_related
from utilities.views import register_model_view
from utilities.views import GetRelatedModelsMixin, register_model_view
from . import filtersets, forms, tables
from .models import *

Expand All @@ -26,17 +26,12 @@ class ProviderListView(generic.ObjectListView):


@register_model_view(Provider)
class ProviderView(generic.ObjectView):
class ProviderView(GetRelatedModelsMixin, generic.ObjectView):
queryset = Provider.objects.all()

def get_extra_context(self, request, instance):
related_models = (
(ProviderAccount.objects.restrict(request.user, 'view').filter(provider=instance), 'provider_id'),
(Circuit.objects.restrict(request.user, 'view').filter(provider=instance), 'provider_id'),
)

return {
'related_models': related_models,
'related_models': self.get_related_models(request, instance),
}


Expand Down Expand Up @@ -92,16 +87,12 @@ class ProviderAccountListView(generic.ObjectListView):


@register_model_view(ProviderAccount)
class ProviderAccountView(generic.ObjectView):
class ProviderAccountView(GetRelatedModelsMixin, generic.ObjectView):
queryset = ProviderAccount.objects.all()

def get_extra_context(self, request, instance):
related_models = (
(Circuit.objects.restrict(request.user, 'view').filter(provider_account=instance), 'provider_account_id'),
)

return {
'related_models': related_models,
'related_models': self.get_related_models(request, instance),
}


Expand Down Expand Up @@ -156,19 +147,20 @@ class ProviderNetworkListView(generic.ObjectListView):


@register_model_view(ProviderNetwork)
class ProviderNetworkView(generic.ObjectView):
class ProviderNetworkView(GetRelatedModelsMixin, generic.ObjectView):
queryset = ProviderNetwork.objects.all()

def get_extra_context(self, request, instance):
related_models = (
def get_extra_related_models(self, request, instance):
return (
(
Circuit.objects.restrict(request.user, 'view').filter(terminations__provider_network=instance),
'provider_network_id',
),
)

def get_extra_context(self, request, instance):
return {
'related_models': related_models,
'related_models': self.get_related_models(request, instance, [CircuitTermination]),
}


Expand Down Expand Up @@ -215,16 +207,12 @@ class CircuitTypeListView(generic.ObjectListView):


@register_model_view(CircuitType)
class CircuitTypeView(generic.ObjectView):
class CircuitTypeView(GetRelatedModelsMixin, generic.ObjectView):
queryset = CircuitType.objects.all()

def get_extra_context(self, request, instance):
related_models = (
(Circuit.objects.restrict(request.user, 'view').filter(type=instance), 'type_id'),
)

return {
'related_models': related_models,
'related_models': self.get_related_models(request, instance),
}


Expand Down
10 changes: 3 additions & 7 deletions netbox/core/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
from netbox.views import generic
from netbox.views.generic.base import BaseObjectView
from utilities.utils import count_related
from utilities.views import ContentTypePermissionRequiredMixin, register_model_view
from utilities.views import ContentTypePermissionRequiredMixin, GetRelatedModelsMixin, register_model_view
from . import filtersets, forms, tables
from .models import *

Expand All @@ -27,16 +27,12 @@ class DataSourceListView(generic.ObjectListView):


@register_model_view(DataSource)
class DataSourceView(generic.ObjectView):
class DataSourceView(GetRelatedModelsMixin, generic.ObjectView):
queryset = DataSource.objects.all()

def get_extra_context(self, request, instance):
related_models = (
(DataFile.objects.restrict(request.user, 'view').filter(source=instance), 'source_id'),
)

return {
'related_models': related_models,
'related_models': self.get_related_models(request, instance),
}


Expand Down
Loading
Loading