소스 검색

Change CablePath.path to JSONField

jeremystretch 4 년 전
부모
커밋
83fdab5feb
3개의 변경된 파일과 6개의 추가작업 그리고 18개의 파일을 삭제
  1. 0 13
      netbox/dcim/fields.py
  2. 1 2
      netbox/dcim/migrations/0157_cablepath.py
  3. 5 3
      netbox/dcim/models/cables.py

+ 0 - 13
netbox/dcim/fields.py

@@ -10,7 +10,6 @@ from .lookups import PathContains
 __all__ = (
 __all__ = (
     'ASNField',
     'ASNField',
     'MACAddressField',
     'MACAddressField',
-    'MultiNodePathField',
     'PathField',
     'PathField',
     'WWNField',
     'WWNField',
 )
 )
@@ -105,16 +104,4 @@ class PathField(ArrayField):
         super().__init__(**kwargs)
         super().__init__(**kwargs)
 
 
 
 
-class MultiNodePathField(ArrayField):
-    """
-    A two-dimensional ArrayField which represents a path, with one or more nodes at each hop. Each node is
-    identified by a (type, ID) tuple.
-    """
-    def __init__(self, **kwargs):
-        kwargs['base_field'] = ArrayField(
-            base_field=models.CharField(max_length=40)
-        )
-        super().__init__(**kwargs)
-
-
 PathField.register_lookup(PathContains)
 PathField.register_lookup(PathContains)

+ 1 - 2
netbox/dcim/migrations/0157_cablepath.py

@@ -18,8 +18,7 @@ class Migration(migrations.Migration):
         migrations.AddField(
         migrations.AddField(
             model_name='cablepath',
             model_name='cablepath',
             name='path',
             name='path',
-            field=dcim.fields.MultiNodePathField(base_field=django.contrib.postgres.fields.ArrayField(base_field=models.CharField(max_length=40), size=None), default=[], size=None),
-            preserve_default=False,
+            field=models.JSONField(default=list),
         ),
         ),
         migrations.AddField(
         migrations.AddField(
             model_name='cablepath',
             model_name='cablepath',

+ 5 - 3
netbox/dcim/models/cables.py

@@ -2,14 +2,14 @@ from collections import defaultdict
 
 
 from django.contrib.contenttypes.fields import GenericForeignKey
 from django.contrib.contenttypes.fields import GenericForeignKey
 from django.contrib.contenttypes.models import ContentType
 from django.contrib.contenttypes.models import ContentType
-from django.core.exceptions import ObjectDoesNotExist, ValidationError
+from django.core.exceptions import ValidationError
 from django.db import models
 from django.db import models
 from django.db.models import Sum
 from django.db.models import Sum
 from django.urls import reverse
 from django.urls import reverse
 
 
 from dcim.choices import *
 from dcim.choices import *
 from dcim.constants import *
 from dcim.constants import *
-from dcim.fields import MultiNodePathField, PathField
+from dcim.fields import PathField
 from dcim.utils import decompile_path_node, flatten_path, object_to_path_node, path_node_to_object
 from dcim.utils import decompile_path_node, flatten_path, object_to_path_node, path_node_to_object
 from netbox.models import NetBoxModel
 from netbox.models import NetBoxModel
 from utilities.fields import ColorField
 from utilities.fields import ColorField
@@ -288,7 +288,9 @@ class CablePath(models.Model):
     `is_active` is set to True only if 1) `destination` is not null, and 2) every Cable within the path has a status of
     `is_active` is set to True only if 1) `destination` is not null, and 2) every Cable within the path has a status of
     "connected".
     "connected".
     """
     """
-    path = MultiNodePathField()
+    path = models.JSONField(
+        default=list
+    )
     is_active = models.BooleanField(
     is_active = models.BooleanField(
         default=False
         default=False
     )
     )