fixing deprecated_team.organization credential migration

This commit is contained in:
Wayne Witzel III
2016-08-30 14:21:16 -04:00
parent c87637ea7d
commit fd9d05d5df
2 changed files with 10 additions and 7 deletions

View File

@@ -54,10 +54,6 @@ class AutoOneToOneField(models.OneToOneField):
AutoSingleRelatedObjectDescriptor(related)) AutoSingleRelatedObjectDescriptor(related))
def resolve_role_field(obj, field): def resolve_role_field(obj, field):
ret = [] ret = []
@@ -71,8 +67,8 @@ def resolve_role_field(obj, field):
return [] return []
if len(field_components) == 1: if len(field_components) == 1:
Role_ = get_current_apps().get_model('main', 'Role') role_cls = str(get_current_apps().get_model('main', 'Role'))
if type(obj) is not Role_: if not str(type(obj)) == role_cls:
raise Exception(smart_text('{} refers to a {}, not a Role'.format(field, type(obj)))) raise Exception(smart_text('{} refers to a {}, not a Role'.format(field, type(obj))))
ret.append(obj.id) ret.append(obj.id)
else: else:

View File

@@ -2,7 +2,9 @@ import logging
from time import time from time import time
from django.utils.encoding import smart_text from django.utils.encoding import smart_text
from django.db import transaction
from django.db.models import Q from django.db.models import Q
from django.db.utils import IntegrityError
from collections import defaultdict from collections import defaultdict
from awx.main.utils import getattrd from awx.main.utils import getattrd
@@ -489,7 +491,12 @@ def rebuild_role_hierarchy(apps, schema_editor):
logger.info('Rebuild completed in %f seconds' % (stop - start)) logger.info('Rebuild completed in %f seconds' % (stop - start))
logger.info('Done.') logger.info('Done.')
def infer_credential_org_from_team(apps, schema_editor): def infer_credential_org_from_team(apps, schema_editor):
Credential = apps.get_model('main', "Credential") Credential = apps.get_model('main', "Credential")
for cred in Credential.objects.exclude(deprecated_team__isnull=True): for cred in Credential.objects.exclude(deprecated_team__isnull=True):
_update_credential_parents(cred.deprecated_team.organization, cred) try:
with transaction.atomic():
_update_credential_parents(cred.deprecated_team.organization, cred)
except IntegrityError:
logger.info("Organization<{}> credential for old Team<{}> credential already created".format(cred.deprecated_team.organization.pk, cred.pk))