From 1b6e67ba0ab6884f303794b6ceaec524a541447b Mon Sep 17 00:00:00 2001 From: Daniel Sheppard Date: Wed, 22 Mar 2023 08:17:17 -0500 Subject: [PATCH] #9047 - Fix constraint check --- netbox/circuits/migrations/0042_provideraccount_and_more.py | 4 ++-- netbox/circuits/models/providers.py | 4 +++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/netbox/circuits/migrations/0042_provideraccount_and_more.py b/netbox/circuits/migrations/0042_provideraccount_and_more.py index ce918b2b5..11584cedb 100644 --- a/netbox/circuits/migrations/0042_provideraccount_and_more.py +++ b/netbox/circuits/migrations/0042_provideraccount_and_more.py @@ -27,7 +27,7 @@ def create_provideraccounts_from_providers(apps, schema_editor): # def revert_provideraccounts_from_providers(apps, schema_editor): ProviderAccount = apps.get_model('circuits', 'ProviderAccount') - provideraccounts = ProviderAccount.objects.all().orderby('pk') + provideraccounts = ProviderAccount.objects.all().order_by('pk') for provideraccount in provideraccounts: if provideraccounts.filter(provider=provideraccount.provider)[0] == provideraccount: provideraccount.provider.account = provideraccount.account @@ -66,7 +66,7 @@ class Migration(migrations.Migration): ), migrations.AddConstraint( model_name='provideraccount', - constraint=models.UniqueConstraint(fields=('provider', 'account'), name='circuits_provideraccount_unique_provider_account'), + constraint=models.UniqueConstraint(condition=models.Q(('account', ''), _negated=True), fields=('provider', 'account'), name='circuits_provideraccount_unique_provider_account'), ), migrations.RunPython( create_provideraccounts_from_providers, revert_provideraccounts_from_providers diff --git a/netbox/circuits/models/providers.py b/netbox/circuits/models/providers.py index f2ac6c032..25a6819dd 100644 --- a/netbox/circuits/models/providers.py +++ b/netbox/circuits/models/providers.py @@ -1,5 +1,6 @@ from django.contrib.contenttypes.fields import GenericRelation from django.db import models +from django.db.models import Q from django.urls import reverse from netbox.models import PrimaryModel @@ -81,7 +82,8 @@ class ProviderAccount(PrimaryModel): ), models.UniqueConstraint( fields=('provider', 'account'), - name='%(app_label)s_%(class)s_unique_provider_account' + name='%(app_label)s_%(class)s_unique_provider_account', + condition=~Q(account="") ), )