From b86c8a95243be27b72dcae527819d3856a6ccc93 Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Thu, 21 Mar 2024 16:09:53 -0400 Subject: [PATCH] Remove utilities.utils.dynamic_import() --- netbox/utilities/api.py | 10 +++++----- netbox/utilities/utils.py | 11 ----------- 2 files changed, 5 insertions(+), 16 deletions(-) diff --git a/netbox/utilities/api.py b/netbox/utilities/api.py index ab5823bf2..11b914811 100644 --- a/netbox/utilities/api.py +++ b/netbox/utilities/api.py @@ -4,6 +4,7 @@ from django.core.exceptions import ( ) from django.db.models.fields.related import ManyToOneRel, RelatedField from django.urls import reverse +from django.utils.module_loading import import_string from django.utils.translation import gettext_lazy as _ from rest_framework.serializers import Serializer from rest_framework.views import get_view_name as drf_get_view_name @@ -13,7 +14,6 @@ from netbox.api.exceptions import GraphQLTypeNotFound, SerializerNotFound from netbox.api.fields import RelatedObjectCountField from .query import count_related, dict_to_filter_params from .string import title -from .utils import dynamic_import __all__ = ( 'get_annotations_for_serializer', @@ -33,8 +33,8 @@ def get_serializer_for_model(model, prefix=''): app_label, model_name = model._meta.label.split('.') serializer_name = f'{app_label}.api.serializers.{prefix}{model_name}Serializer' try: - return dynamic_import(serializer_name) - except AttributeError: + return import_string(serializer_name) + except ImportError: raise SerializerNotFound( f"Could not determine serializer for {app_label}.{model_name} with prefix '{prefix}'" ) @@ -47,8 +47,8 @@ def get_graphql_type_for_model(model): app_label, model_name = model._meta.label.split('.') class_name = f'{app_label}.graphql.types.{model_name}Type' try: - return dynamic_import(class_name) - except AttributeError: + return import_string(class_name) + except ImportError: raise GraphQLTypeNotFound(f"Could not find GraphQL type for {app_label}.{model_name}") diff --git a/netbox/utilities/utils.py b/netbox/utilities/utils.py index 47dc7e1b3..f45f116f7 100644 --- a/netbox/utilities/utils.py +++ b/netbox/utilities/utils.py @@ -1,17 +1,6 @@ from django.db.models import ManyToOneRel -def dynamic_import(name): - """ - Dynamically import a class from an absolute path string - """ - components = name.split('.') - mod = __import__(components[0]) - for comp in components[1:]: - mod = getattr(mod, comp) - return mod - - def get_related_models(model, ordered=True): """ Return a list of all models which have a ForeignKey to the given model and the name of the field. For example,