From e4abbfb2c6064d03091f3890a30343cfb788d8ea Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Tue, 25 Jan 2022 17:37:06 -0500 Subject: [PATCH] Closes #8454: Set DEFAULT_AUTO_FIELD to BigAutoField --- docs/release-notes/version-3.2.md | 1 + .../migrations/0033_gfk_bigidfield.py | 18 -- .../migrations/0033_standardize_id_fields.py | 44 +++ netbox/dcim/migrations/0151_gfk_bigidfield.py | 73 ----- .../migrations/0151_standardize_id_fields.py | 274 ++++++++++++++++++ netbox/dcim/models/cables.py | 4 +- .../extras/migrations/0071_gfk_bigidfield.py | 33 --- .../migrations/0071_standardize_id_fields.py | 94 ++++++ netbox/extras/models/change_logging.py | 3 +- netbox/extras/models/models.py | 4 +- netbox/extras/models/tags.py | 4 +- netbox/ipam/migrations/0056_gfk_bigidfield.py | 23 -- .../migrations/0056_standardize_id_fields.py | 99 +++++++ netbox/netbox/models/__init__.py | 11 +- netbox/netbox/settings.py | 2 +- .../tenancy/migrations/0005_gfk_bigidfield.py | 18 -- .../migrations/0005_standardize_id_fields.py | 49 ++++ .../migrations/0002_standardize_id_fields.py | 26 ++ netbox/users/models.py | 5 +- .../migrations/0027_standardize_id_fields.py | 36 +++ .../migrations/0002_standardize_id_fields.py | 26 ++ netbox/wireless/models.py | 2 +- 22 files changed, 665 insertions(+), 184 deletions(-) delete mode 100644 netbox/circuits/migrations/0033_gfk_bigidfield.py create mode 100644 netbox/circuits/migrations/0033_standardize_id_fields.py delete mode 100644 netbox/dcim/migrations/0151_gfk_bigidfield.py create mode 100644 netbox/dcim/migrations/0151_standardize_id_fields.py delete mode 100644 netbox/extras/migrations/0071_gfk_bigidfield.py create mode 100644 netbox/extras/migrations/0071_standardize_id_fields.py delete mode 100644 netbox/ipam/migrations/0056_gfk_bigidfield.py create mode 100644 netbox/ipam/migrations/0056_standardize_id_fields.py delete mode 100644 netbox/tenancy/migrations/0005_gfk_bigidfield.py create mode 100644 netbox/tenancy/migrations/0005_standardize_id_fields.py create mode 100644 netbox/users/migrations/0002_standardize_id_fields.py create mode 100644 netbox/virtualization/migrations/0027_standardize_id_fields.py create mode 100644 netbox/wireless/migrations/0002_standardize_id_fields.py diff --git a/docs/release-notes/version-3.2.md b/docs/release-notes/version-3.2.md index c35806c04fd..789003cca23 100644 --- a/docs/release-notes/version-3.2.md +++ b/docs/release-notes/version-3.2.md @@ -81,6 +81,7 @@ Inventory item templates can be arranged hierarchically within a device type, an * [#7743](https://github.com/netbox-community/netbox/issues/7743) - Remove legacy ASN field from site model * [#7748](https://github.com/netbox-community/netbox/issues/7748) - Remove legacy contact fields from site model * [#8031](https://github.com/netbox-community/netbox/issues/8031) - Remove automatic redirection of legacy slug-based URLs +* [#8195](https://github.com/netbox-community/netbox/issues/8195), [#8454](https://github.com/netbox-community/netbox/issues/8454) - Use 64-bit integers for all primary keys ### REST API Changes diff --git a/netbox/circuits/migrations/0033_gfk_bigidfield.py b/netbox/circuits/migrations/0033_gfk_bigidfield.py deleted file mode 100644 index 970617a889b..00000000000 --- a/netbox/circuits/migrations/0033_gfk_bigidfield.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 3.2.11 on 2022-01-24 21:00 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('circuits', '0032_provider_service_id'), - ] - - operations = [ - migrations.AlterField( - model_name='circuittermination', - name='_link_peer_id', - field=models.PositiveBigIntegerField(blank=True, null=True), - ), - ] diff --git a/netbox/circuits/migrations/0033_standardize_id_fields.py b/netbox/circuits/migrations/0033_standardize_id_fields.py new file mode 100644 index 00000000000..475fc25274b --- /dev/null +++ b/netbox/circuits/migrations/0033_standardize_id_fields.py @@ -0,0 +1,44 @@ +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('circuits', '0032_provider_service_id'), + ] + + operations = [ + # Model IDs + migrations.AlterField( + model_name='circuit', + name='id', + field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False), + ), + migrations.AlterField( + model_name='circuittermination', + name='id', + field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False), + ), + migrations.AlterField( + model_name='circuittype', + name='id', + field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False), + ), + migrations.AlterField( + model_name='provider', + name='id', + field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False), + ), + migrations.AlterField( + model_name='providernetwork', + name='id', + field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False), + ), + + # GFK IDs + migrations.AlterField( + model_name='circuittermination', + name='_link_peer_id', + field=models.PositiveBigIntegerField(blank=True, null=True), + ), + ] diff --git a/netbox/dcim/migrations/0151_gfk_bigidfield.py b/netbox/dcim/migrations/0151_gfk_bigidfield.py deleted file mode 100644 index 733e6ecd5dd..00000000000 --- a/netbox/dcim/migrations/0151_gfk_bigidfield.py +++ /dev/null @@ -1,73 +0,0 @@ -# Generated by Django 3.2.11 on 2022-01-24 21:00 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('dcim', '0150_interface_speed_duplex'), - ] - - operations = [ - migrations.AlterField( - model_name='cable', - name='termination_a_id', - field=models.PositiveBigIntegerField(), - ), - migrations.AlterField( - model_name='cable', - name='termination_b_id', - field=models.PositiveBigIntegerField(), - ), - migrations.AlterField( - model_name='cablepath', - name='destination_id', - field=models.PositiveBigIntegerField(blank=True, null=True), - ), - migrations.AlterField( - model_name='cablepath', - name='origin_id', - field=models.PositiveBigIntegerField(), - ), - migrations.AlterField( - model_name='consoleport', - name='_link_peer_id', - field=models.PositiveBigIntegerField(blank=True, null=True), - ), - migrations.AlterField( - model_name='consoleserverport', - name='_link_peer_id', - field=models.PositiveBigIntegerField(blank=True, null=True), - ), - migrations.AlterField( - model_name='frontport', - name='_link_peer_id', - field=models.PositiveBigIntegerField(blank=True, null=True), - ), - migrations.AlterField( - model_name='interface', - name='_link_peer_id', - field=models.PositiveBigIntegerField(blank=True, null=True), - ), - migrations.AlterField( - model_name='powerfeed', - name='_link_peer_id', - field=models.PositiveBigIntegerField(blank=True, null=True), - ), - migrations.AlterField( - model_name='poweroutlet', - name='_link_peer_id', - field=models.PositiveBigIntegerField(blank=True, null=True), - ), - migrations.AlterField( - model_name='powerport', - name='_link_peer_id', - field=models.PositiveBigIntegerField(blank=True, null=True), - ), - migrations.AlterField( - model_name='rearport', - name='_link_peer_id', - field=models.PositiveBigIntegerField(blank=True, null=True), - ), - ] diff --git a/netbox/dcim/migrations/0151_standardize_id_fields.py b/netbox/dcim/migrations/0151_standardize_id_fields.py new file mode 100644 index 00000000000..76fea859b3b --- /dev/null +++ b/netbox/dcim/migrations/0151_standardize_id_fields.py @@ -0,0 +1,274 @@ +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('dcim', '0150_interface_speed_duplex'), + ] + + operations = [ + # Model IDs + migrations.AlterField( + model_name='cable', + name='id', + field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False), + ), + migrations.AlterField( + model_name='cablepath', + name='id', + field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False), + ), + migrations.AlterField( + model_name='consoleport', + name='id', + field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False), + ), + migrations.AlterField( + model_name='consoleporttemplate', + name='id', + field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False), + ), + migrations.AlterField( + model_name='consoleserverport', + name='id', + field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False), + ), + migrations.AlterField( + model_name='consoleserverporttemplate', + name='id', + field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False), + ), + migrations.AlterField( + model_name='device', + name='id', + field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False), + ), + migrations.AlterField( + model_name='devicebay', + name='id', + field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False), + ), + migrations.AlterField( + model_name='devicebaytemplate', + name='id', + field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False), + ), + migrations.AlterField( + model_name='devicerole', + name='id', + field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False), + ), + migrations.AlterField( + model_name='devicetype', + name='id', + field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False), + ), + migrations.AlterField( + model_name='frontport', + name='id', + field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False), + ), + migrations.AlterField( + model_name='frontporttemplate', + name='id', + field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False), + ), + migrations.AlterField( + model_name='interface', + name='id', + field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False), + ), + migrations.AlterField( + model_name='interfacetemplate', + name='id', + field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False), + ), + migrations.AlterField( + model_name='inventoryitem', + name='id', + field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False), + ), + migrations.AlterField( + model_name='inventoryitemrole', + name='id', + field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False), + ), + migrations.AlterField( + model_name='inventoryitemtemplate', + name='id', + field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False), + ), + migrations.AlterField( + model_name='location', + name='id', + field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False), + ), + migrations.AlterField( + model_name='manufacturer', + name='id', + field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False), + ), + migrations.AlterField( + model_name='module', + name='id', + field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False), + ), + migrations.AlterField( + model_name='modulebay', + name='id', + field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False), + ), + migrations.AlterField( + model_name='modulebaytemplate', + name='id', + field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False), + ), + migrations.AlterField( + model_name='moduletype', + name='id', + field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False), + ), + migrations.AlterField( + model_name='platform', + name='id', + field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False), + ), + migrations.AlterField( + model_name='powerfeed', + name='id', + field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False), + ), + migrations.AlterField( + model_name='poweroutlet', + name='id', + field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False), + ), + migrations.AlterField( + model_name='poweroutlettemplate', + name='id', + field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False), + ), + migrations.AlterField( + model_name='powerpanel', + name='id', + field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False), + ), + migrations.AlterField( + model_name='powerport', + name='id', + field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False), + ), + migrations.AlterField( + model_name='powerporttemplate', + name='id', + field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False), + ), + migrations.AlterField( + model_name='rack', + name='id', + field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False), + ), + migrations.AlterField( + model_name='rackreservation', + name='id', + field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False), + ), + migrations.AlterField( + model_name='rackrole', + name='id', + field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False), + ), + migrations.AlterField( + model_name='rearport', + name='id', + field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False), + ), + migrations.AlterField( + model_name='rearporttemplate', + name='id', + field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False), + ), + migrations.AlterField( + model_name='region', + name='id', + field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False), + ), + migrations.AlterField( + model_name='site', + name='id', + field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False), + ), + migrations.AlterField( + model_name='sitegroup', + name='id', + field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False), + ), + migrations.AlterField( + model_name='virtualchassis', + name='id', + field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False), + ), + + # GFK IDs + migrations.AlterField( + model_name='cable', + name='termination_a_id', + field=models.PositiveBigIntegerField(), + ), + migrations.AlterField( + model_name='cable', + name='termination_b_id', + field=models.PositiveBigIntegerField(), + ), + migrations.AlterField( + model_name='cablepath', + name='destination_id', + field=models.PositiveBigIntegerField(blank=True, null=True), + ), + migrations.AlterField( + model_name='cablepath', + name='origin_id', + field=models.PositiveBigIntegerField(), + ), + migrations.AlterField( + model_name='consoleport', + name='_link_peer_id', + field=models.PositiveBigIntegerField(blank=True, null=True), + ), + migrations.AlterField( + model_name='consoleserverport', + name='_link_peer_id', + field=models.PositiveBigIntegerField(blank=True, null=True), + ), + migrations.AlterField( + model_name='frontport', + name='_link_peer_id', + field=models.PositiveBigIntegerField(blank=True, null=True), + ), + migrations.AlterField( + model_name='interface', + name='_link_peer_id', + field=models.PositiveBigIntegerField(blank=True, null=True), + ), + migrations.AlterField( + model_name='powerfeed', + name='_link_peer_id', + field=models.PositiveBigIntegerField(blank=True, null=True), + ), + migrations.AlterField( + model_name='poweroutlet', + name='_link_peer_id', + field=models.PositiveBigIntegerField(blank=True, null=True), + ), + migrations.AlterField( + model_name='powerport', + name='_link_peer_id', + field=models.PositiveBigIntegerField(blank=True, null=True), + ), + migrations.AlterField( + model_name='rearport', + name='_link_peer_id', + field=models.PositiveBigIntegerField(blank=True, null=True), + ), + ] diff --git a/netbox/dcim/models/cables.py b/netbox/dcim/models/cables.py index e3cc20177be..f1d4d70431a 100644 --- a/netbox/dcim/models/cables.py +++ b/netbox/dcim/models/cables.py @@ -11,7 +11,7 @@ from dcim.choices import * from dcim.constants import * from dcim.fields import PathField from dcim.utils import decompile_path_node, object_to_path_node, path_node_to_object -from netbox.models import BigIDModel, PrimaryModel +from netbox.models import PrimaryModel from utilities.fields import ColorField from utilities.utils import to_meters from .devices import Device @@ -298,7 +298,7 @@ class Cable(PrimaryModel): return COMPATIBLE_TERMINATION_TYPES[self.termination_a._meta.model_name] -class CablePath(BigIDModel): +class CablePath(models.Model): """ A CablePath instance represents the physical path from an origin to a destination, including all intermediate elements in the path. Every instance must specify an `origin`, whereas `destination` may be null (for paths which do diff --git a/netbox/extras/migrations/0071_gfk_bigidfield.py b/netbox/extras/migrations/0071_gfk_bigidfield.py deleted file mode 100644 index 64ce3c471d2..00000000000 --- a/netbox/extras/migrations/0071_gfk_bigidfield.py +++ /dev/null @@ -1,33 +0,0 @@ -# Generated by Django 3.2.11 on 2022-01-24 21:00 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('extras', '0070_customlink_enabled'), - ] - - operations = [ - migrations.AlterField( - model_name='imageattachment', - name='object_id', - field=models.PositiveBigIntegerField(), - ), - migrations.AlterField( - model_name='journalentry', - name='assigned_object_id', - field=models.PositiveBigIntegerField(), - ), - migrations.AlterField( - model_name='objectchange', - name='changed_object_id', - field=models.PositiveBigIntegerField(), - ), - migrations.AlterField( - model_name='objectchange', - name='related_object_id', - field=models.PositiveBigIntegerField(blank=True, null=True), - ), - ] diff --git a/netbox/extras/migrations/0071_standardize_id_fields.py b/netbox/extras/migrations/0071_standardize_id_fields.py new file mode 100644 index 00000000000..fa2b132bfd1 --- /dev/null +++ b/netbox/extras/migrations/0071_standardize_id_fields.py @@ -0,0 +1,94 @@ +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('extras', '0070_customlink_enabled'), + ] + + operations = [ + # Model IDs + migrations.AlterField( + model_name='configcontext', + name='id', + field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False), + ), + migrations.AlterField( + model_name='configrevision', + name='id', + field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False), + ), + migrations.AlterField( + model_name='customfield', + name='id', + field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False), + ), + migrations.AlterField( + model_name='customlink', + name='id', + field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False), + ), + migrations.AlterField( + model_name='exporttemplate', + name='id', + field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False), + ), + migrations.AlterField( + model_name='imageattachment', + name='id', + field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False), + ), + migrations.AlterField( + model_name='jobresult', + name='id', + field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False), + ), + migrations.AlterField( + model_name='journalentry', + name='id', + field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False), + ), + migrations.AlterField( + model_name='objectchange', + name='id', + field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False), + ), + migrations.AlterField( + model_name='tag', + name='id', + field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False), + ), + migrations.AlterField( + model_name='taggeditem', + name='id', + field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False), + ), + migrations.AlterField( + model_name='webhook', + name='id', + field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False), + ), + + # GFK IDs + migrations.AlterField( + model_name='imageattachment', + name='object_id', + field=models.PositiveBigIntegerField(), + ), + migrations.AlterField( + model_name='journalentry', + name='assigned_object_id', + field=models.PositiveBigIntegerField(), + ), + migrations.AlterField( + model_name='objectchange', + name='changed_object_id', + field=models.PositiveBigIntegerField(), + ), + migrations.AlterField( + model_name='objectchange', + name='related_object_id', + field=models.PositiveBigIntegerField(blank=True, null=True), + ), + ] diff --git a/netbox/extras/models/change_logging.py b/netbox/extras/models/change_logging.py index 4e703833aef..8444260c84c 100644 --- a/netbox/extras/models/change_logging.py +++ b/netbox/extras/models/change_logging.py @@ -5,11 +5,10 @@ from django.db import models from django.urls import reverse from extras.choices import * -from netbox.models import BigIDModel from utilities.querysets import RestrictedQuerySet -class ObjectChange(BigIDModel): +class ObjectChange(models.Model): """ Record a change to an object and the user account associated with that change. A change record may optionally indicate an object related to the one being changed. For example, a change to an interface may also indicate the diff --git a/netbox/extras/models/models.py b/netbox/extras/models/models.py index 143bc7d9b61..1ea4a01d426 100644 --- a/netbox/extras/models/models.py +++ b/netbox/extras/models/models.py @@ -18,7 +18,7 @@ from extras.choices import * from extras.constants import * from extras.conditions import ConditionSet from extras.utils import FeatureQuery, image_upload -from netbox.models import BigIDModel, ChangeLoggedModel +from netbox.models import ChangeLoggedModel from netbox.models.features import ExportTemplatesMixin, JobResultsMixin, WebhooksMixin from utilities.querysets import RestrictedQuerySet from utilities.utils import render_jinja2 @@ -467,7 +467,7 @@ class JournalEntry(WebhooksMixin, ChangeLoggedModel): return JournalEntryKindChoices.colors.get(self.kind) -class JobResult(BigIDModel): +class JobResult(models.Model): """ This model stores the results from running a user-defined report. """ diff --git a/netbox/extras/models/tags.py b/netbox/extras/models/tags.py index df8446b9c1c..a4b3f080d2f 100644 --- a/netbox/extras/models/tags.py +++ b/netbox/extras/models/tags.py @@ -3,7 +3,7 @@ from django.urls import reverse from django.utils.text import slugify from taggit.models import TagBase, GenericTaggedItemBase -from netbox.models import BigIDModel, ChangeLoggedModel +from netbox.models import ChangeLoggedModel from netbox.models.features import ExportTemplatesMixin, WebhooksMixin from utilities.choices import ColorChoices from utilities.fields import ColorField @@ -36,7 +36,7 @@ class Tag(ExportTemplatesMixin, WebhooksMixin, ChangeLoggedModel, TagBase): return slug -class TaggedItem(BigIDModel, GenericTaggedItemBase): +class TaggedItem(GenericTaggedItemBase): tag = models.ForeignKey( to=Tag, related_name="%(app_label)s_%(class)s_items", diff --git a/netbox/ipam/migrations/0056_gfk_bigidfield.py b/netbox/ipam/migrations/0056_gfk_bigidfield.py deleted file mode 100644 index f40f6527107..00000000000 --- a/netbox/ipam/migrations/0056_gfk_bigidfield.py +++ /dev/null @@ -1,23 +0,0 @@ -# Generated by Django 3.2.11 on 2022-01-24 21:00 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('ipam', '0055_servicetemplate'), - ] - - operations = [ - migrations.AlterField( - model_name='fhrpgroupassignment', - name='interface_id', - field=models.PositiveBigIntegerField(), - ), - migrations.AlterField( - model_name='ipaddress', - name='assigned_object_id', - field=models.PositiveBigIntegerField(blank=True, null=True), - ), - ] diff --git a/netbox/ipam/migrations/0056_standardize_id_fields.py b/netbox/ipam/migrations/0056_standardize_id_fields.py new file mode 100644 index 00000000000..cb756445062 --- /dev/null +++ b/netbox/ipam/migrations/0056_standardize_id_fields.py @@ -0,0 +1,99 @@ +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('ipam', '0055_servicetemplate'), + ] + + operations = [ + # Model IDs + migrations.AlterField( + model_name='aggregate', + name='id', + field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False), + ), + migrations.AlterField( + model_name='asn', + name='id', + field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False), + ), + migrations.AlterField( + model_name='fhrpgroup', + name='id', + field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False), + ), + migrations.AlterField( + model_name='fhrpgroupassignment', + name='id', + field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False), + ), + migrations.AlterField( + model_name='ipaddress', + name='id', + field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False), + ), + migrations.AlterField( + model_name='iprange', + name='id', + field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False), + ), + migrations.AlterField( + model_name='prefix', + name='id', + field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False), + ), + migrations.AlterField( + model_name='rir', + name='id', + field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False), + ), + migrations.AlterField( + model_name='role', + name='id', + field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False), + ), + migrations.AlterField( + model_name='routetarget', + name='id', + field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False), + ), + migrations.AlterField( + model_name='service', + name='id', + field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False), + ), + migrations.AlterField( + model_name='servicetemplate', + name='id', + field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False), + ), + migrations.AlterField( + model_name='vlan', + name='id', + field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False), + ), + migrations.AlterField( + model_name='vlangroup', + name='id', + field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False), + ), + migrations.AlterField( + model_name='vrf', + name='id', + field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False), + ), + + # GFK IDs + migrations.AlterField( + model_name='fhrpgroupassignment', + name='interface_id', + field=models.PositiveBigIntegerField(), + ), + migrations.AlterField( + model_name='ipaddress', + name='assigned_object_id', + field=models.PositiveBigIntegerField(blank=True, null=True), + ), + ] diff --git a/netbox/netbox/models/__init__.py b/netbox/netbox/models/__init__.py index 2db2e260240..3631cf7f408 100644 --- a/netbox/netbox/models/__init__.py +++ b/netbox/netbox/models/__init__.py @@ -7,7 +7,6 @@ from utilities.querysets import RestrictedQuerySet from netbox.models.features import * __all__ = ( - 'BigIDModel', 'ChangeLoggedModel', 'NestedGroupModel', 'OrganizationalModel', @@ -26,7 +25,7 @@ class BaseModel( ExportTemplatesMixin, JournalingMixin, TagsMixin, - WebhooksMixin, + WebhooksMixin ): class Meta: abstract = True @@ -44,7 +43,7 @@ class BigIDModel(models.Model): abstract = True -class ChangeLoggedModel(ChangeLoggingMixin, CustomValidationMixin, BigIDModel): +class ChangeLoggedModel(ChangeLoggingMixin, CustomValidationMixin, models.Model): """ Base model for all objects which support change logging. """ @@ -54,7 +53,7 @@ class ChangeLoggedModel(ChangeLoggingMixin, CustomValidationMixin, BigIDModel): abstract = True -class PrimaryModel(BaseModel, ChangeLoggingMixin, BigIDModel): +class PrimaryModel(BaseModel, ChangeLoggingMixin, models.Model): """ Primary models represent real objects within the infrastructure being modeled. """ @@ -64,7 +63,7 @@ class PrimaryModel(BaseModel, ChangeLoggingMixin, BigIDModel): abstract = True -class NestedGroupModel(BaseModel, ChangeLoggingMixin, BigIDModel, MPTTModel): +class NestedGroupModel(BaseModel, ChangeLoggingMixin, MPTTModel): """ Base model for objects which are used to form a hierarchy (regions, locations, etc.). These models nest recursively using MPTT. Within each parent, each child instance must have a unique name. @@ -106,7 +105,7 @@ class NestedGroupModel(BaseModel, ChangeLoggingMixin, BigIDModel, MPTTModel): }) -class OrganizationalModel(BaseModel, ChangeLoggingMixin, BigIDModel): +class OrganizationalModel(BaseModel, ChangeLoggingMixin, models.Model): """ Organizational models are those which are used solely to categorize and qualify other objects, and do not convey any real information about the infrastructure being modeled (for example, functional device roles). Organizational diff --git a/netbox/netbox/settings.py b/netbox/netbox/settings.py index 5808602a22b..2c33ec862b9 100644 --- a/netbox/netbox/settings.py +++ b/netbox/netbox/settings.py @@ -406,7 +406,7 @@ LOGIN_REDIRECT_URL = f'/{BASE_PATH}' CSRF_TRUSTED_ORIGINS = ALLOWED_HOSTS -DEFAULT_AUTO_FIELD = 'django.db.models.AutoField' +DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField' # Exclude potentially sensitive models from wildcard view exemption. These may still be exempted # by specifying the model individually in the EXEMPT_VIEW_PERMISSIONS configuration parameter. diff --git a/netbox/tenancy/migrations/0005_gfk_bigidfield.py b/netbox/tenancy/migrations/0005_gfk_bigidfield.py deleted file mode 100644 index 12bbde29502..00000000000 --- a/netbox/tenancy/migrations/0005_gfk_bigidfield.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 3.2.11 on 2022-01-24 21:00 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('tenancy', '0004_extend_tag_support'), - ] - - operations = [ - migrations.AlterField( - model_name='contactassignment', - name='object_id', - field=models.PositiveBigIntegerField(), - ), - ] diff --git a/netbox/tenancy/migrations/0005_standardize_id_fields.py b/netbox/tenancy/migrations/0005_standardize_id_fields.py new file mode 100644 index 00000000000..514478f17b4 --- /dev/null +++ b/netbox/tenancy/migrations/0005_standardize_id_fields.py @@ -0,0 +1,49 @@ +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('tenancy', '0004_extend_tag_support'), + ] + + operations = [ + # Model IDs + migrations.AlterField( + model_name='contact', + name='id', + field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False), + ), + migrations.AlterField( + model_name='contactassignment', + name='id', + field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False), + ), + migrations.AlterField( + model_name='contactgroup', + name='id', + field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False), + ), + migrations.AlterField( + model_name='contactrole', + name='id', + field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False), + ), + migrations.AlterField( + model_name='tenant', + name='id', + field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False), + ), + migrations.AlterField( + model_name='tenantgroup', + name='id', + field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False), + ), + + # GFK IDs + migrations.AlterField( + model_name='contactassignment', + name='object_id', + field=models.PositiveBigIntegerField(), + ), + ] diff --git a/netbox/users/migrations/0002_standardize_id_fields.py b/netbox/users/migrations/0002_standardize_id_fields.py new file mode 100644 index 00000000000..60191d916db --- /dev/null +++ b/netbox/users/migrations/0002_standardize_id_fields.py @@ -0,0 +1,26 @@ +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('users', '0001_squashed_0011'), + ] + + operations = [ + migrations.AlterField( + model_name='objectpermission', + name='id', + field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False), + ), + migrations.AlterField( + model_name='token', + name='id', + field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False), + ), + migrations.AlterField( + model_name='userconfig', + name='id', + field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False), + ), + ] diff --git a/netbox/users/models.py b/netbox/users/models.py index 0ce91363bb5..722ec5ba698 100644 --- a/netbox/users/models.py +++ b/netbox/users/models.py @@ -11,7 +11,6 @@ from django.dispatch import receiver from django.utils import timezone from netbox.config import get_config -from netbox.models import BigIDModel from utilities.querysets import RestrictedQuerySet from utilities.utils import flatten_dict from .constants import * @@ -187,7 +186,7 @@ def create_userconfig(instance, created, **kwargs): # REST API # -class Token(BigIDModel): +class Token(models.Model): """ An API token used for user authentication. This extends the stock model to allow each user to have multiple tokens. It also supports setting an expiration time and toggling write ability. @@ -246,7 +245,7 @@ class Token(BigIDModel): # Permissions # -class ObjectPermission(BigIDModel): +class ObjectPermission(models.Model): """ A mapping of view, add, change, and/or delete permission for users and/or groups to an arbitrary set of objects identified by ORM query parameters. diff --git a/netbox/virtualization/migrations/0027_standardize_id_fields.py b/netbox/virtualization/migrations/0027_standardize_id_fields.py new file mode 100644 index 00000000000..01d7e8af1f4 --- /dev/null +++ b/netbox/virtualization/migrations/0027_standardize_id_fields.py @@ -0,0 +1,36 @@ +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('virtualization', '0026_vminterface_bridge'), + ] + + operations = [ + migrations.AlterField( + model_name='cluster', + name='id', + field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False), + ), + migrations.AlterField( + model_name='clustergroup', + name='id', + field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False), + ), + migrations.AlterField( + model_name='clustertype', + name='id', + field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False), + ), + migrations.AlterField( + model_name='virtualmachine', + name='id', + field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False), + ), + migrations.AlterField( + model_name='vminterface', + name='id', + field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False), + ), + ] diff --git a/netbox/wireless/migrations/0002_standardize_id_fields.py b/netbox/wireless/migrations/0002_standardize_id_fields.py new file mode 100644 index 00000000000..9e0b202c2d9 --- /dev/null +++ b/netbox/wireless/migrations/0002_standardize_id_fields.py @@ -0,0 +1,26 @@ +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('wireless', '0001_wireless'), + ] + + operations = [ + migrations.AlterField( + model_name='wirelesslan', + name='id', + field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False), + ), + migrations.AlterField( + model_name='wirelesslangroup', + name='id', + field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False), + ), + migrations.AlterField( + model_name='wirelesslink', + name='id', + field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False), + ), + ] diff --git a/netbox/wireless/models.py b/netbox/wireless/models.py index 843462ec652..621024d7917 100644 --- a/netbox/wireless/models.py +++ b/netbox/wireless/models.py @@ -5,7 +5,7 @@ from mptt.models import MPTTModel, TreeForeignKey from dcim.choices import LinkStatusChoices from dcim.constants import WIRELESS_IFACE_TYPES -from netbox.models import BigIDModel, NestedGroupModel, PrimaryModel +from netbox.models import NestedGroupModel, PrimaryModel from .choices import * from .constants import *