mirror of
https://github.com/netbox-community/netbox.git
synced 2024-05-10 07:54:54 +00:00
Update model ordering parameters to ensure deterministic ordering
This commit is contained in:
21
netbox/dcim/migrations/0089_deterministic_ordering.py
Normal file
21
netbox/dcim/migrations/0089_deterministic_ordering.py
Normal file
@ -0,0 +1,21 @@
|
||||
# Generated by Django 2.2.8 on 2020-01-15 18:10
|
||||
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('dcim', '0088_powerfeed_available_power'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterModelOptions(
|
||||
name='device',
|
||||
options={'ordering': ('name', 'pk'), 'permissions': (('napalm_read', 'Read-only access to devices via NAPALM'), ('napalm_write', 'Read/write access to devices via NAPALM'))},
|
||||
),
|
||||
migrations.AlterModelOptions(
|
||||
name='rack',
|
||||
options={'ordering': ('site', 'group', 'name', 'pk')},
|
||||
),
|
||||
]
|
@ -594,8 +594,9 @@ class Rack(ChangeLoggedModel, CustomFieldModel, RackElevationHelperMixin):
|
||||
}
|
||||
|
||||
class Meta:
|
||||
ordering = ['site', 'group', 'name']
|
||||
ordering = ('site', 'group', 'name', 'pk') # (site, group, name) may be non-unique
|
||||
unique_together = [
|
||||
# Name and facility_id must be unique *only* within a RackGroup
|
||||
['group', 'name'],
|
||||
['group', 'facility_id'],
|
||||
]
|
||||
@ -1392,7 +1393,7 @@ class Device(ChangeLoggedModel, ConfigContextModel, CustomFieldModel):
|
||||
}
|
||||
|
||||
class Meta:
|
||||
ordering = ['name']
|
||||
ordering = ('name', 'pk') # Name may be NULL
|
||||
unique_together = [
|
||||
['site', 'tenant', 'name'], # See validate_unique below
|
||||
['rack', 'position', 'face'],
|
||||
|
29
netbox/extras/migrations/0035_deterministic_ordering.py
Normal file
29
netbox/extras/migrations/0035_deterministic_ordering.py
Normal file
@ -0,0 +1,29 @@
|
||||
# Generated by Django 2.2.8 on 2020-01-15 18:10
|
||||
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('extras', '0034_configcontext_tags'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterModelOptions(
|
||||
name='customfieldvalue',
|
||||
options={'ordering': ('obj_type', 'obj_id', 'pk')},
|
||||
),
|
||||
migrations.AlterModelOptions(
|
||||
name='graph',
|
||||
options={'ordering': ('type', 'weight', 'name', 'pk')},
|
||||
),
|
||||
migrations.AlterModelOptions(
|
||||
name='imageattachment',
|
||||
options={'ordering': ('name', 'pk')},
|
||||
),
|
||||
migrations.AlterModelOptions(
|
||||
name='webhook',
|
||||
options={'ordering': ('name',)},
|
||||
),
|
||||
]
|
@ -120,6 +120,7 @@ class Webhook(models.Model):
|
||||
)
|
||||
|
||||
class Meta:
|
||||
ordering = ('name',)
|
||||
unique_together = ('payload_url', 'type_create', 'type_update', 'type_delete',)
|
||||
|
||||
def __str__(self):
|
||||
@ -308,8 +309,8 @@ class CustomFieldValue(models.Model):
|
||||
)
|
||||
|
||||
class Meta:
|
||||
ordering = ['obj_type', 'obj_id']
|
||||
unique_together = ['field', 'obj_type', 'obj_id']
|
||||
ordering = ('obj_type', 'obj_id', 'pk') # (obj_type, obj_id) may be non-unique
|
||||
unique_together = ('field', 'obj_type', 'obj_id')
|
||||
|
||||
def __str__(self):
|
||||
return '{} {}'.format(self.obj, self.field)
|
||||
@ -454,7 +455,7 @@ class Graph(models.Model):
|
||||
)
|
||||
|
||||
class Meta:
|
||||
ordering = ['type', 'weight', 'name']
|
||||
ordering = ('type', 'weight', 'name', 'pk') # (type, weight, name) may be non-unique
|
||||
|
||||
def __str__(self):
|
||||
return self.name
|
||||
@ -623,7 +624,7 @@ class ImageAttachment(models.Model):
|
||||
)
|
||||
|
||||
class Meta:
|
||||
ordering = ['name']
|
||||
ordering = ('name', 'pk') # name may be non-unique
|
||||
|
||||
def __str__(self):
|
||||
if self.name:
|
||||
|
42
netbox/ipam/migrations/0033_deterministic_ordering.py
Normal file
42
netbox/ipam/migrations/0033_deterministic_ordering.py
Normal file
@ -0,0 +1,42 @@
|
||||
# Generated by Django 2.2.8 on 2020-01-15 18:10
|
||||
|
||||
from django.db import migrations
|
||||
import django.db.models.expressions
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('ipam', '0032_role_description'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterModelOptions(
|
||||
name='aggregate',
|
||||
options={'ordering': ('family', 'prefix', 'pk')},
|
||||
),
|
||||
migrations.AlterModelOptions(
|
||||
name='ipaddress',
|
||||
options={'ordering': ('family', 'address', 'pk'), 'verbose_name': 'IP address', 'verbose_name_plural': 'IP addresses'},
|
||||
),
|
||||
migrations.AlterModelOptions(
|
||||
name='prefix',
|
||||
options={'ordering': (django.db.models.expressions.OrderBy(django.db.models.expressions.F('vrf'), nulls_first=True), 'family', 'prefix', 'pk'), 'verbose_name_plural': 'prefixes'},
|
||||
),
|
||||
migrations.AlterModelOptions(
|
||||
name='service',
|
||||
options={'ordering': ('protocol', 'port', 'pk')},
|
||||
),
|
||||
migrations.AlterModelOptions(
|
||||
name='vlan',
|
||||
options={'ordering': ('site', 'group', 'vid', 'pk'), 'verbose_name': 'VLAN', 'verbose_name_plural': 'VLANs'},
|
||||
),
|
||||
migrations.AlterModelOptions(
|
||||
name='vlangroup',
|
||||
options={'ordering': ('site', 'name', 'pk'), 'verbose_name': 'VLAN group', 'verbose_name_plural': 'VLAN groups'},
|
||||
),
|
||||
migrations.AlterModelOptions(
|
||||
name='vrf',
|
||||
options={'ordering': ('name', 'rd', 'pk'), 'verbose_name': 'VRF', 'verbose_name_plural': 'VRFs'},
|
||||
),
|
||||
]
|
@ -87,7 +87,7 @@ class VRF(ChangeLoggedModel, CustomFieldModel):
|
||||
]
|
||||
|
||||
class Meta:
|
||||
ordering = ['name', 'rd']
|
||||
ordering = ('name', 'rd', 'pk') # (name, rd) may be non-unique
|
||||
verbose_name = 'VRF'
|
||||
verbose_name_plural = 'VRFs'
|
||||
|
||||
@ -189,7 +189,7 @@ class Aggregate(ChangeLoggedModel, CustomFieldModel):
|
||||
]
|
||||
|
||||
class Meta:
|
||||
ordering = ['family', 'prefix']
|
||||
ordering = ('family', 'prefix', 'pk') # (family, prefix) may be non-unique
|
||||
|
||||
def __str__(self):
|
||||
return str(self.prefix)
|
||||
@ -383,7 +383,7 @@ class Prefix(ChangeLoggedModel, CustomFieldModel):
|
||||
}
|
||||
|
||||
class Meta:
|
||||
ordering = [F('vrf').asc(nulls_first=True), 'family', 'prefix']
|
||||
ordering = (F('vrf').asc(nulls_first=True), 'family', 'prefix', 'pk') # (vrf, family, prefix) may be non-unique
|
||||
verbose_name_plural = 'prefixes'
|
||||
|
||||
def __str__(self):
|
||||
@ -666,7 +666,7 @@ class IPAddress(ChangeLoggedModel, CustomFieldModel):
|
||||
}
|
||||
|
||||
class Meta:
|
||||
ordering = ['family', 'address']
|
||||
ordering = ('family', 'address', 'pk') # (family, address) may be non-unique
|
||||
verbose_name = 'IP address'
|
||||
verbose_name_plural = 'IP addresses'
|
||||
|
||||
@ -829,7 +829,7 @@ class VLANGroup(ChangeLoggedModel):
|
||||
csv_headers = ['name', 'slug', 'site']
|
||||
|
||||
class Meta:
|
||||
ordering = ['site', 'name']
|
||||
ordering = ('site', 'name', 'pk') # (site, name) may be non-unique
|
||||
unique_together = [
|
||||
['site', 'name'],
|
||||
['site', 'slug'],
|
||||
@ -934,7 +934,7 @@ class VLAN(ChangeLoggedModel, CustomFieldModel):
|
||||
}
|
||||
|
||||
class Meta:
|
||||
ordering = ['site', 'group', 'vid']
|
||||
ordering = ('site', 'group', 'vid', 'pk') # (site, group, vid) may be non-unique
|
||||
unique_together = [
|
||||
['group', 'vid'],
|
||||
['group', 'name'],
|
||||
@ -1037,7 +1037,7 @@ class Service(ChangeLoggedModel, CustomFieldModel):
|
||||
csv_headers = ['device', 'virtual_machine', 'name', 'protocol', 'description']
|
||||
|
||||
class Meta:
|
||||
ordering = ['protocol', 'port']
|
||||
ordering = ('protocol', 'port', 'pk') # (protocol, port) may be non-unique
|
||||
|
||||
def __str__(self):
|
||||
return '{} ({}/{})'.format(self.name, self.port, self.get_protocol_display())
|
||||
|
@ -0,0 +1,17 @@
|
||||
# Generated by Django 2.2.8 on 2020-01-15 18:10
|
||||
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('virtualization', '0012_vm_name_nonunique'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterModelOptions(
|
||||
name='virtualmachine',
|
||||
options={'ordering': ('name', 'pk')},
|
||||
),
|
||||
]
|
@ -273,7 +273,7 @@ class VirtualMachine(ChangeLoggedModel, ConfigContextModel, CustomFieldModel):
|
||||
}
|
||||
|
||||
class Meta:
|
||||
ordering = ['name']
|
||||
ordering = ('name', 'pk') # Name may be non-unique
|
||||
unique_together = [
|
||||
['cluster', 'tenant', 'name']
|
||||
]
|
||||
|
Reference in New Issue
Block a user