From 893adef79c38378422ac0d6eb60aa164f4deccea Mon Sep 17 00:00:00 2001 From: Daniel Sheppard Date: Fri, 13 Sep 2024 12:39:10 -0500 Subject: [PATCH] Fixes: #17492 - Change methods on NetBox*HyperlinkedIdentityField to use get_viewname --- netbox/netbox/api/serializers/fields.py | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/netbox/netbox/api/serializers/fields.py b/netbox/netbox/api/serializers/fields.py index 4fee36043..74782bddf 100644 --- a/netbox/netbox/api/serializers/fields.py +++ b/netbox/netbox/api/serializers/fields.py @@ -1,5 +1,8 @@ +from django.utils.translation import gettext_lazy as _ from rest_framework import serializers +from utilities.views import get_viewname + __all__ = ( 'NetBoxAPIHyperlinkedIdentityField', 'NetBoxURLHyperlinkedIdentityField', @@ -30,12 +33,10 @@ class BaseNetBoxHyperlinkedIdentityField(serializers.HyperlinkedIdentityField): lookup_value = getattr(obj, self.lookup_field) kwargs = {self.lookup_url_kwarg: lookup_value} - model_name = self.parent.Meta.model._meta.model_name - app_name = self.parent.Meta.model._meta.app_label - view_name = self.get_view_name(app_name, model_name) + view_name = self.get_view_name(obj) return self.reverse(view_name, kwargs=kwargs, request=request, format=format) - def get_view_name(self, app_name, model_name): + def get_view_name(self, model): raise NotImplementedError(_('{class_name} must implement get_view_name()').format( class_name=self.__class__.__name__ )) @@ -43,11 +44,11 @@ class BaseNetBoxHyperlinkedIdentityField(serializers.HyperlinkedIdentityField): class NetBoxAPIHyperlinkedIdentityField(BaseNetBoxHyperlinkedIdentityField): - def get_view_name(self, app_name, model_name): - return f'{app_name}-api:{model_name}-detail' + def get_view_name(self, model): + return get_viewname(model=model, action='detail', rest_api=True) class NetBoxURLHyperlinkedIdentityField(BaseNetBoxHyperlinkedIdentityField): - def get_view_name(self, app_name, model_name): - return f'{app_name}:{model_name}' + def get_view_name(self, model): + return get_viewname(model=model)