|
|
@@ -25,7 +25,9 @@ from extras.models import ConfigContextModel, CustomFieldModel, ObjectChange, Ta
|
|
|
from extras.utils import extras_features
|
|
|
from utilities.choices import ColorChoices
|
|
|
from utilities.fields import ColorField, NaturalOrderingField
|
|
|
+from utilities.querysets import RestrictedQuerySet
|
|
|
from utilities.models import ChangeLoggedModel
|
|
|
+from utilities.mptt import TreeManager
|
|
|
from utilities.utils import serialize_object, to_meters
|
|
|
from utilities.validators import ExclusionValidator
|
|
|
from .device_component_templates import (
|
|
|
@@ -103,6 +105,8 @@ class Region(MPTTModel, ChangeLoggedModel):
|
|
|
blank=True
|
|
|
)
|
|
|
|
|
|
+ objects = TreeManager()
|
|
|
+
|
|
|
csv_headers = ['name', 'slug', 'parent', 'description']
|
|
|
|
|
|
class MPTTMeta:
|
|
|
@@ -244,6 +248,8 @@ class Site(ChangeLoggedModel, CustomFieldModel):
|
|
|
)
|
|
|
tags = TaggableManager(through=TaggedItem)
|
|
|
|
|
|
+ objects = RestrictedQuerySet.as_manager()
|
|
|
+
|
|
|
csv_headers = [
|
|
|
'name', 'slug', 'status', 'region', 'tenant', 'facility', 'asn', 'time_zone', 'description', 'physical_address',
|
|
|
'shipping_address', 'latitude', 'longitude', 'contact_name', 'contact_phone', 'contact_email', 'comments',
|
|
|
@@ -326,6 +332,8 @@ class RackGroup(MPTTModel, ChangeLoggedModel):
|
|
|
blank=True
|
|
|
)
|
|
|
|
|
|
+ objects = TreeManager()
|
|
|
+
|
|
|
csv_headers = ['site', 'parent', 'name', 'slug', 'description']
|
|
|
|
|
|
class Meta:
|
|
|
@@ -388,6 +396,8 @@ class RackRole(ChangeLoggedModel):
|
|
|
blank=True,
|
|
|
)
|
|
|
|
|
|
+ objects = RestrictedQuerySet.as_manager()
|
|
|
+
|
|
|
csv_headers = ['name', 'slug', 'color', 'description']
|
|
|
|
|
|
class Meta:
|
|
|
@@ -526,6 +536,8 @@ class Rack(ChangeLoggedModel, CustomFieldModel):
|
|
|
)
|
|
|
tags = TaggableManager(through=TaggedItem)
|
|
|
|
|
|
+ objects = RestrictedQuerySet.as_manager()
|
|
|
+
|
|
|
csv_headers = [
|
|
|
'site', 'group', 'name', 'facility_id', 'tenant', 'status', 'role', 'type', 'serial', 'asset_tag', 'width',
|
|
|
'u_height', 'desc_units', 'outer_width', 'outer_depth', 'outer_unit', 'comments',
|
|
|
@@ -821,6 +833,8 @@ class RackReservation(ChangeLoggedModel):
|
|
|
max_length=200
|
|
|
)
|
|
|
|
|
|
+ objects = RestrictedQuerySet.as_manager()
|
|
|
+
|
|
|
csv_headers = ['site', 'rack_group', 'rack', 'units', 'tenant', 'user', 'description']
|
|
|
|
|
|
class Meta:
|
|
|
@@ -900,6 +914,8 @@ class Manufacturer(ChangeLoggedModel):
|
|
|
blank=True
|
|
|
)
|
|
|
|
|
|
+ objects = RestrictedQuerySet.as_manager()
|
|
|
+
|
|
|
csv_headers = ['name', 'slug', 'description']
|
|
|
|
|
|
class Meta:
|
|
|
@@ -982,9 +998,10 @@ class DeviceType(ChangeLoggedModel, CustomFieldModel):
|
|
|
content_type_field='obj_type',
|
|
|
object_id_field='obj_id'
|
|
|
)
|
|
|
-
|
|
|
tags = TaggableManager(through=TaggedItem)
|
|
|
|
|
|
+ objects = RestrictedQuerySet.as_manager()
|
|
|
+
|
|
|
clone_fields = [
|
|
|
'manufacturer', 'u_height', 'is_full_depth', 'subdevice_role',
|
|
|
]
|
|
|
@@ -1206,6 +1223,8 @@ class DeviceRole(ChangeLoggedModel):
|
|
|
blank=True,
|
|
|
)
|
|
|
|
|
|
+ objects = RestrictedQuerySet.as_manager()
|
|
|
+
|
|
|
csv_headers = ['name', 'slug', 'color', 'vm_role', 'description']
|
|
|
|
|
|
class Meta:
|
|
|
@@ -1263,6 +1282,8 @@ class Platform(ChangeLoggedModel):
|
|
|
blank=True
|
|
|
)
|
|
|
|
|
|
+ objects = RestrictedQuerySet.as_manager()
|
|
|
+
|
|
|
csv_headers = ['name', 'slug', 'manufacturer', 'napalm_driver', 'napalm_args', 'description']
|
|
|
|
|
|
class Meta:
|
|
|
@@ -1429,6 +1450,8 @@ class Device(ChangeLoggedModel, ConfigContextModel, CustomFieldModel):
|
|
|
)
|
|
|
tags = TaggableManager(through=TaggedItem)
|
|
|
|
|
|
+ objects = RestrictedQuerySet.as_manager()
|
|
|
+
|
|
|
csv_headers = [
|
|
|
'name', 'device_role', 'tenant', 'manufacturer', 'device_type', 'platform', 'serial', 'asset_tag', 'status',
|
|
|
'site', 'rack_group', 'rack_name', 'position', 'face', 'comments',
|
|
|
@@ -1741,9 +1764,10 @@ class VirtualChassis(ChangeLoggedModel):
|
|
|
max_length=30,
|
|
|
blank=True
|
|
|
)
|
|
|
-
|
|
|
tags = TaggableManager(through=TaggedItem)
|
|
|
|
|
|
+ objects = RestrictedQuerySet.as_manager()
|
|
|
+
|
|
|
csv_headers = ['master', 'domain']
|
|
|
|
|
|
class Meta:
|
|
|
@@ -1813,6 +1837,8 @@ class PowerPanel(ChangeLoggedModel):
|
|
|
max_length=50
|
|
|
)
|
|
|
|
|
|
+ objects = RestrictedQuerySet.as_manager()
|
|
|
+
|
|
|
csv_headers = ['site', 'rack_group', 'name']
|
|
|
|
|
|
class Meta:
|
|
|
@@ -1916,9 +1942,10 @@ class PowerFeed(ChangeLoggedModel, CableTermination, CustomFieldModel):
|
|
|
content_type_field='obj_type',
|
|
|
object_id_field='obj_id'
|
|
|
)
|
|
|
-
|
|
|
tags = TaggableManager(through=TaggedItem)
|
|
|
|
|
|
+ objects = RestrictedQuerySet.as_manager()
|
|
|
+
|
|
|
csv_headers = [
|
|
|
'site', 'power_panel', 'rack_group', 'rack', 'name', 'status', 'type', 'supply', 'phase', 'voltage',
|
|
|
'amperage', 'max_utilization', 'comments',
|
|
|
@@ -2084,6 +2111,8 @@ class Cable(ChangeLoggedModel):
|
|
|
null=True
|
|
|
)
|
|
|
|
|
|
+ objects = RestrictedQuerySet.as_manager()
|
|
|
+
|
|
|
csv_headers = [
|
|
|
'termination_a_type', 'termination_a_id', 'termination_b_type', 'termination_b_id', 'type', 'status', 'label',
|
|
|
'color', 'length', 'length_unit',
|