Просмотр исходного кода

Remove utilities.utils.dynamic_import()

Jeremy Stretch 1 год назад
Родитель
Сommit
b86c8a9524
2 измененных файлов с 5 добавлено и 16 удалено
  1. 5 5
      netbox/utilities/api.py
  2. 0 11
      netbox/utilities/utils.py

+ 5 - 5
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}")
 
 

+ 0 - 11
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,