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

Move prepare_cloned_fields() to utilities.querydict

Jeremy Stretch 1 год назад
Родитель
Сommit
3b4898adea

+ 1 - 2
netbox/netbox/views/generic/object_views.py

@@ -18,8 +18,7 @@ from utilities.error_handlers import handle_protectederror
 from utilities.exceptions import AbortRequest, PermissionsViolation
 from utilities.exceptions import AbortRequest, PermissionsViolation
 from utilities.forms import ConfirmationForm, restrict_form_fields
 from utilities.forms import ConfirmationForm, restrict_form_fields
 from utilities.permissions import get_permission_for_model
 from utilities.permissions import get_permission_for_model
-from utilities.querydict import normalize_querydict
-from utilities.utils import prepare_cloned_fields
+from utilities.querydict import normalize_querydict, prepare_cloned_fields
 from utilities.views import GetReturnURLMixin, get_viewname
 from utilities.views import GetReturnURLMixin, get_viewname
 from .base import BaseObjectView
 from .base import BaseObjectView
 from .mixins import ActionsMixin, TableMixin
 from .mixins import ActionsMixin, TableMixin

+ 26 - 0
netbox/utilities/querydict.py

@@ -1,9 +1,12 @@
+from urllib.parse import urlencode
+
 from django.http import QueryDict
 from django.http import QueryDict
 from django.utils.datastructures import MultiValueDict
 from django.utils.datastructures import MultiValueDict
 
 
 __all__ = (
 __all__ = (
     'dict_to_querydict',
     'dict_to_querydict',
     'normalize_querydict',
     'normalize_querydict',
+    'prepare_cloned_fields',
 )
 )
 
 
 
 
@@ -36,3 +39,26 @@ def normalize_querydict(querydict):
     return {
     return {
         k: v if len(v) > 1 else v[0] for k, v in querydict.lists()
         k: v if len(v) > 1 else v[0] for k, v in querydict.lists()
     }
     }
+
+
+def prepare_cloned_fields(instance):
+    """
+    Generate a QueryDict comprising attributes from an object's clone() method.
+    """
+    # Generate the clone attributes from the instance
+    if not hasattr(instance, 'clone'):
+        return QueryDict(mutable=True)
+    attrs = instance.clone()
+
+    # Prepare QueryDict parameters
+    params = []
+    for key, value in attrs.items():
+        if type(value) in (list, tuple):
+            params.extend([(key, v) for v in value])
+        elif value not in (False, None):
+            params.append((key, value))
+        else:
+            params.append((key, ''))
+
+    # Return a QueryDict with the parameters
+    return QueryDict(urlencode(params), mutable=True)

+ 1 - 1
netbox/utilities/templatetags/buttons.py

@@ -4,7 +4,7 @@ from django.urls import NoReverseMatch, reverse
 
 
 from core.models import ObjectType
 from core.models import ObjectType
 from extras.models import Bookmark, ExportTemplate
 from extras.models import Bookmark, ExportTemplate
-from utilities.utils import prepare_cloned_fields
+from utilities.querydict import prepare_cloned_fields
 from utilities.views import get_viewname
 from utilities.views import get_viewname
 
 
 __all__ = (
 __all__ = (

+ 0 - 26
netbox/utilities/utils.py

@@ -1,8 +1,5 @@
-from urllib.parse import urlencode
-
 from django.db.models import Count, ManyToOneRel, OuterRef, Subquery
 from django.db.models import Count, ManyToOneRel, OuterRef, Subquery
 from django.db.models.functions import Coalesce
 from django.db.models.functions import Coalesce
-from django.http import QueryDict
 from django.utils import timezone
 from django.utils import timezone
 from django.utils.timezone import localtime
 from django.utils.timezone import localtime
 
 
@@ -69,29 +66,6 @@ def dict_to_filter_params(d, prefix=''):
     return params
     return params
 
 
 
 
-def prepare_cloned_fields(instance):
-    """
-    Generate a QueryDict comprising attributes from an object's clone() method.
-    """
-    # Generate the clone attributes from the instance
-    if not hasattr(instance, 'clone'):
-        return QueryDict(mutable=True)
-    attrs = instance.clone()
-
-    # Prepare querydict parameters
-    params = []
-    for key, value in attrs.items():
-        if type(value) in (list, tuple):
-            params.extend([(key, v) for v in value])
-        elif value not in (False, None):
-            params.append((key, value))
-        else:
-            params.append((key, ''))
-
-    # Return a QueryDict with the parameters
-    return QueryDict(urlencode(params), mutable=True)
-
-
 def content_type_name(ct, include_app=True):
 def content_type_name(ct, include_app=True):
     """
     """
     Return a human-friendly ContentType name (e.g. "DCIM > Site").
     Return a human-friendly ContentType name (e.g. "DCIM > Site").