1
0
mirror of https://github.com/netbox-community/netbox.git synced 2024-05-10 07:54:54 +00:00

Closes #5011: Standardized name field lengths across all models

This commit is contained in:
Jeremy Stretch
2020-10-15 15:37:34 -04:00
parent 8781cf1c57
commit c9c8d337a0
16 changed files with 327 additions and 28 deletions

View File

@ -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 * [#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 * [#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 * [#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 * [#5225](https://github.com/netbox-community/netbox/issues/5225) - Circuit termination port speed is now an optional field
### REST API Changes ### REST API Changes

View File

@ -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),
),
]

View File

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

View File

@ -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),
),
]

View File

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

View File

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

View File

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

View File

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

View File

@ -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),
),
]

View File

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

View File

@ -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),
),
]

View File

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

View File

@ -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),
),
]

View File

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

View File

@ -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),
),
]

View File

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