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

Closes #5011: Standardized name field lengths across all models

Jeremy Stretch 5 лет назад
Родитель
Сommit
c9c8d337a0

+ 1 - 0
docs/release-notes/version-2.10.md

@@ -60,6 +60,7 @@ All end-to-end cable paths are now cached using the new CablePath model. This al
 * [#4360](https://github.com/netbox-community/netbox/issues/4360) - Remove support for the Django template language from export templates
 * [#4878](https://github.com/netbox-community/netbox/issues/4878) - Custom field data is now stored directly on each object
 * [#4941](https://github.com/netbox-community/netbox/issues/4941) - `commit` argument is now required argument in a custom script's `run()` method
+* [#5011](https://github.com/netbox-community/netbox/issues/5011) - Standardized name field lengths across all models
 * [#5225](https://github.com/netbox-community/netbox/issues/5225) - Circuit termination port speed is now an optional field
 
 ### REST API Changes

+ 38 - 0
netbox/circuits/migrations/0024_standardize_name_length.py

@@ -0,0 +1,38 @@
+# Generated by Django 3.1 on 2020-10-15 19:33
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('circuits', '0023_circuittermination_port_speed_optional'),
+    ]
+
+    operations = [
+        migrations.AlterField(
+            model_name='circuit',
+            name='cid',
+            field=models.CharField(max_length=100),
+        ),
+        migrations.AlterField(
+            model_name='circuittype',
+            name='name',
+            field=models.CharField(max_length=100, unique=True),
+        ),
+        migrations.AlterField(
+            model_name='circuittype',
+            name='slug',
+            field=models.SlugField(max_length=100, unique=True),
+        ),
+        migrations.AlterField(
+            model_name='provider',
+            name='name',
+            field=models.CharField(max_length=100, unique=True),
+        ),
+        migrations.AlterField(
+            model_name='provider',
+            name='slug',
+            field=models.SlugField(max_length=100, unique=True),
+        ),
+    ]

+ 5 - 3
netbox/circuits/models.py

@@ -27,10 +27,11 @@ class Provider(ChangeLoggedModel, CustomFieldModel):
     stores information pertinent to the user's relationship with the Provider.
     """
     name = models.CharField(
-        max_length=50,
+        max_length=100,
         unique=True
     )
     slug = models.SlugField(
+        max_length=100,
         unique=True
     )
     asn = ASNField(
@@ -98,10 +99,11 @@ class CircuitType(ChangeLoggedModel):
     "Long Haul," "Metro," or "Out-of-Band".
     """
     name = models.CharField(
-        max_length=50,
+        max_length=100,
         unique=True
     )
     slug = models.SlugField(
+        max_length=100,
         unique=True
     )
     description = models.CharField(
@@ -138,7 +140,7 @@ class Circuit(ChangeLoggedModel, CustomFieldModel):
     in Kbps.
     """
     cid = models.CharField(
-        max_length=50,
+        max_length=100,
         verbose_name='Circuit ID'
     )
     provider = models.ForeignKey(

+ 98 - 0
netbox/dcim/migrations/0122_standardize_name_length.py

@@ -0,0 +1,98 @@
+# Generated by Django 3.1 on 2020-10-15 19:33
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('dcim', '0121_cablepath'),
+    ]
+
+    operations = [
+        migrations.AlterField(
+            model_name='devicerole',
+            name='name',
+            field=models.CharField(max_length=100, unique=True),
+        ),
+        migrations.AlterField(
+            model_name='devicerole',
+            name='slug',
+            field=models.SlugField(max_length=100, unique=True),
+        ),
+        migrations.AlterField(
+            model_name='devicetype',
+            name='model',
+            field=models.CharField(max_length=100),
+        ),
+        migrations.AlterField(
+            model_name='devicetype',
+            name='slug',
+            field=models.SlugField(max_length=100),
+        ),
+        migrations.AlterField(
+            model_name='manufacturer',
+            name='name',
+            field=models.CharField(max_length=100, unique=True),
+        ),
+        migrations.AlterField(
+            model_name='manufacturer',
+            name='slug',
+            field=models.SlugField(max_length=100, unique=True),
+        ),
+        migrations.AlterField(
+            model_name='powerfeed',
+            name='name',
+            field=models.CharField(max_length=100),
+        ),
+        migrations.AlterField(
+            model_name='powerpanel',
+            name='name',
+            field=models.CharField(max_length=100),
+        ),
+        migrations.AlterField(
+            model_name='rack',
+            name='name',
+            field=models.CharField(max_length=100),
+        ),
+        migrations.AlterField(
+            model_name='rackgroup',
+            name='name',
+            field=models.CharField(max_length=100),
+        ),
+        migrations.AlterField(
+            model_name='rackgroup',
+            name='slug',
+            field=models.SlugField(max_length=100),
+        ),
+        migrations.AlterField(
+            model_name='rackrole',
+            name='name',
+            field=models.CharField(max_length=100, unique=True),
+        ),
+        migrations.AlterField(
+            model_name='rackrole',
+            name='slug',
+            field=models.SlugField(max_length=100, unique=True),
+        ),
+        migrations.AlterField(
+            model_name='region',
+            name='name',
+            field=models.CharField(max_length=100, unique=True),
+        ),
+        migrations.AlterField(
+            model_name='region',
+            name='slug',
+            field=models.SlugField(max_length=100, unique=True),
+        ),
+        migrations.AlterField(
+            model_name='site',
+            name='name',
+            field=models.CharField(max_length=100, unique=True),
+        ),
+        migrations.AlterField(
+            model_name='site',
+            name='slug',
+            field=models.SlugField(max_length=100, unique=True),
+        ),
+    ]

+ 10 - 6
netbox/dcim/models/devices.py

@@ -41,10 +41,11 @@ class Manufacturer(ChangeLoggedModel):
     A Manufacturer represents a company which produces hardware devices; for example, Juniper or Dell.
     """
     name = models.CharField(
-        max_length=50,
+        max_length=100,
         unique=True
     )
     slug = models.SlugField(
+        max_length=100,
         unique=True
     )
     description = models.CharField(
@@ -95,9 +96,11 @@ class DeviceType(ChangeLoggedModel, CustomFieldModel):
         related_name='device_types'
     )
     model = models.CharField(
-        max_length=50
+        max_length=100
+    )
+    slug = models.SlugField(
+        max_length=100
     )
-    slug = models.SlugField()
     part_number = models.CharField(
         max_length=50,
         blank=True,
@@ -340,10 +343,11 @@ class DeviceRole(ChangeLoggedModel):
     virtual machines as well.
     """
     name = models.CharField(
-        max_length=50,
+        max_length=100,
         unique=True
     )
     slug = models.SlugField(
+        max_length=100,
         unique=True
     )
     color = ColorField(
@@ -390,8 +394,8 @@ class Platform(ChangeLoggedModel):
         unique=True
     )
     slug = models.SlugField(
-        unique=True,
-        max_length=100
+        max_length=100,
+        unique=True
     )
     manufacturer = models.ForeignKey(
         to='dcim.Manufacturer',

+ 2 - 2
netbox/dcim/models/power.py

@@ -38,7 +38,7 @@ class PowerPanel(ChangeLoggedModel, CustomFieldModel):
         null=True
     )
     name = models.CharField(
-        max_length=50
+        max_length=100
     )
     tags = TaggableManager(through=TaggedItem)
 
@@ -89,7 +89,7 @@ class PowerFeed(ChangeLoggedModel, PathEndpoint, CableTermination, CustomFieldMo
         null=True
     )
     name = models.CharField(
-        max_length=50
+        max_length=100
     )
     status = models.CharField(
         max_length=50,

+ 7 - 4
netbox/dcim/models/racks.py

@@ -47,9 +47,11 @@ class RackGroup(MPTTModel, ChangeLoggedModel):
     campus. If a Site instead represents a single building, a RackGroup might represent a single room or floor.
     """
     name = models.CharField(
-        max_length=50
+        max_length=100
+    )
+    slug = models.SlugField(
+        max_length=100
     )
-    slug = models.SlugField()
     site = models.ForeignKey(
         to='dcim.Site',
         on_delete=models.CASCADE,
@@ -118,10 +120,11 @@ class RackRole(ChangeLoggedModel):
     Racks can be organized by functional role, similar to Devices.
     """
     name = models.CharField(
-        max_length=50,
+        max_length=100,
         unique=True
     )
     slug = models.SlugField(
+        max_length=100,
         unique=True
     )
     color = ColorField(
@@ -161,7 +164,7 @@ class Rack(ChangeLoggedModel, CustomFieldModel):
     Each Rack is assigned to a Site and (optionally) a RackGroup.
     """
     name = models.CharField(
-        max_length=50
+        max_length=100
     )
     _name = NaturalOrderingField(
         target_field='name',

+ 4 - 2
netbox/dcim/models/sites.py

@@ -39,10 +39,11 @@ class Region(MPTTModel, ChangeLoggedModel):
         db_index=True
     )
     name = models.CharField(
-        max_length=50,
+        max_length=100,
         unique=True
     )
     slug = models.SlugField(
+        max_length=100,
         unique=True
     )
     description = models.CharField(
@@ -98,7 +99,7 @@ class Site(ChangeLoggedModel, CustomFieldModel):
     field can be used to include an external designation, such as a data center name (e.g. Equinix SV6).
     """
     name = models.CharField(
-        max_length=50,
+        max_length=100,
         unique=True
     )
     _name = NaturalOrderingField(
@@ -107,6 +108,7 @@ class Site(ChangeLoggedModel, CustomFieldModel):
         blank=True
     )
     slug = models.SlugField(
+        max_length=100,
         unique=True
     )
     status = models.CharField(

+ 53 - 0
netbox/ipam/migrations/0042_standardize_name_length.py

@@ -0,0 +1,53 @@
+# Generated by Django 3.1 on 2020-10-15 19:33
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('ipam', '0041_routetarget'),
+    ]
+
+    operations = [
+        migrations.AlterField(
+            model_name='rir',
+            name='name',
+            field=models.CharField(max_length=100, unique=True),
+        ),
+        migrations.AlterField(
+            model_name='rir',
+            name='slug',
+            field=models.SlugField(max_length=100, unique=True),
+        ),
+        migrations.AlterField(
+            model_name='role',
+            name='name',
+            field=models.CharField(max_length=100, unique=True),
+        ),
+        migrations.AlterField(
+            model_name='role',
+            name='slug',
+            field=models.SlugField(max_length=100, unique=True),
+        ),
+        migrations.AlterField(
+            model_name='service',
+            name='name',
+            field=models.CharField(max_length=100),
+        ),
+        migrations.AlterField(
+            model_name='vlangroup',
+            name='name',
+            field=models.CharField(max_length=100),
+        ),
+        migrations.AlterField(
+            model_name='vlangroup',
+            name='slug',
+            field=models.SlugField(max_length=100),
+        ),
+        migrations.AlterField(
+            model_name='vrf',
+            name='name',
+            field=models.CharField(max_length=100),
+        ),
+    ]

+ 10 - 6
netbox/ipam/models.py

@@ -46,7 +46,7 @@ class VRF(ChangeLoggedModel, CustomFieldModel):
     are said to exist in the "global" table.)
     """
     name = models.CharField(
-        max_length=50
+        max_length=100
     )
     rd = models.CharField(
         max_length=VRF_RD_MAX_LENGTH,
@@ -168,10 +168,11 @@ class RIR(ChangeLoggedModel):
     space. This can be an organization like ARIN or RIPE, or a governing standard such as RFC 1918.
     """
     name = models.CharField(
-        max_length=50,
+        max_length=100,
         unique=True
     )
     slug = models.SlugField(
+        max_length=100,
         unique=True
     )
     is_private = models.BooleanField(
@@ -313,10 +314,11 @@ class Role(ChangeLoggedModel):
     "Management."
     """
     name = models.CharField(
-        max_length=50,
+        max_length=100,
         unique=True
     )
     slug = models.SlugField(
+        max_length=100,
         unique=True
     )
     weight = models.PositiveSmallIntegerField(
@@ -826,9 +828,11 @@ class VLANGroup(ChangeLoggedModel):
     A VLAN group is an arbitrary collection of VLANs within which VLAN IDs and names must be unique.
     """
     name = models.CharField(
-        max_length=50
+        max_length=100
+    )
+    slug = models.SlugField(
+        max_length=100
     )
-    slug = models.SlugField()
     site = models.ForeignKey(
         to='dcim.Site',
         on_delete=models.PROTECT,
@@ -1021,7 +1025,7 @@ class Service(ChangeLoggedModel, CustomFieldModel):
         blank=True
     )
     name = models.CharField(
-        max_length=30
+        max_length=100
     )
     protocol = models.CharField(
         max_length=50,

+ 23 - 0
netbox/secrets/migrations/0012_standardize_name_length.py

@@ -0,0 +1,23 @@
+# Generated by Django 3.1 on 2020-10-15 19:33
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('secrets', '0011_secret_generic_assignments'),
+    ]
+
+    operations = [
+        migrations.AlterField(
+            model_name='secretrole',
+            name='name',
+            field=models.CharField(max_length=100, unique=True),
+        ),
+        migrations.AlterField(
+            model_name='secretrole',
+            name='slug',
+            field=models.SlugField(max_length=100, unique=True),
+        ),
+    ]

+ 2 - 1
netbox/secrets/models.py

@@ -241,10 +241,11 @@ class SecretRole(ChangeLoggedModel):
     such as "Login Credentials" or "SNMP Communities."
     """
     name = models.CharField(
-        max_length=50,
+        max_length=100,
         unique=True
     )
     slug = models.SlugField(
+        max_length=100,
         unique=True
     )
     description = models.CharField(

+ 33 - 0
netbox/tenancy/migrations/0011_standardize_name_length.py

@@ -0,0 +1,33 @@
+# Generated by Django 3.1 on 2020-10-15 19:33
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('tenancy', '0010_custom_field_data'),
+    ]
+
+    operations = [
+        migrations.AlterField(
+            model_name='tenant',
+            name='name',
+            field=models.CharField(max_length=100, unique=True),
+        ),
+        migrations.AlterField(
+            model_name='tenant',
+            name='slug',
+            field=models.SlugField(max_length=100, unique=True),
+        ),
+        migrations.AlterField(
+            model_name='tenantgroup',
+            name='name',
+            field=models.CharField(max_length=100, unique=True),
+        ),
+        migrations.AlterField(
+            model_name='tenantgroup',
+            name='slug',
+            field=models.SlugField(max_length=100, unique=True),
+        ),
+    ]

+ 4 - 2
netbox/tenancy/models.py

@@ -21,10 +21,11 @@ class TenantGroup(MPTTModel, ChangeLoggedModel):
     An arbitrary collection of Tenants.
     """
     name = models.CharField(
-        max_length=50,
+        max_length=100,
         unique=True
     )
     slug = models.SlugField(
+        max_length=100,
         unique=True
     )
     parent = TreeForeignKey(
@@ -81,10 +82,11 @@ class Tenant(ChangeLoggedModel, CustomFieldModel):
     department.
     """
     name = models.CharField(
-        max_length=30,
+        max_length=100,
         unique=True
     )
     slug = models.SlugField(
+        max_length=100,
         unique=True
     )
     group = models.ForeignKey(

+ 33 - 0
netbox/virtualization/migrations/0019_standardize_name_length.py

@@ -0,0 +1,33 @@
+# Generated by Django 3.1 on 2020-10-15 19:33
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('virtualization', '0018_custom_field_data'),
+    ]
+
+    operations = [
+        migrations.AlterField(
+            model_name='clustergroup',
+            name='name',
+            field=models.CharField(max_length=100, unique=True),
+        ),
+        migrations.AlterField(
+            model_name='clustergroup',
+            name='slug',
+            field=models.SlugField(max_length=100, unique=True),
+        ),
+        migrations.AlterField(
+            model_name='clustertype',
+            name='name',
+            field=models.CharField(max_length=100, unique=True),
+        ),
+        migrations.AlterField(
+            model_name='clustertype',
+            name='slug',
+            field=models.SlugField(max_length=100, unique=True),
+        ),
+    ]

+ 4 - 2
netbox/virtualization/models.py

@@ -35,10 +35,11 @@ class ClusterType(ChangeLoggedModel):
     A type of Cluster.
     """
     name = models.CharField(
-        max_length=50,
+        max_length=100,
         unique=True
     )
     slug = models.SlugField(
+        max_length=100,
         unique=True
     )
     description = models.CharField(
@@ -76,10 +77,11 @@ class ClusterGroup(ChangeLoggedModel):
     An organizational group of Clusters.
     """
     name = models.CharField(
-        max_length=50,
+        max_length=100,
         unique=True
     )
     slug = models.SlugField(
+        max_length=100,
         unique=True
     )
     description = models.CharField(