From 766190fb80b202ced0bf4b68cde6342425a25105 Mon Sep 17 00:00:00 2001 From: Wayne Witzel III Date: Thu, 17 Mar 2016 16:27:47 -0400 Subject: [PATCH] Use getattrd instead of reduce --- awx/main/migrations/_rbac.py | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/awx/main/migrations/_rbac.py b/awx/main/migrations/_rbac.py index 2dc4c287b1..a333ff0233 100644 --- a/awx/main/migrations/_rbac.py +++ b/awx/main/migrations/_rbac.py @@ -2,6 +2,7 @@ from django.contrib.contenttypes.models import ContentType from django.db.models import Q from collections import defaultdict +from awx.main.utils import getattrd import _old_access as old_access def migrate_users(apps, schema_editor): @@ -63,7 +64,7 @@ def attrfunc(attr_path): org = get_org(JobTemplateInstance) ''' def attr(inst): - return reduce(getattr, [inst] + attr_path.split('.')) + return getattrd(inst, attr_path) return attr def _update_credential_parents(org, cred): @@ -96,10 +97,15 @@ def _discover_credentials(instances, cred, orgfunc): if pos == 0: _update_credential_parents(org, cred) else: - cred.pk, cred.user, cred.team = None, None, None + # Create a new credential + cred.pk = None cred.save() + + # Unlink the old information from the new credential + cred.user, cred.team = None, None cred.owner_role, cred.usage_role = None, None cred.save() + for i in orgs[org]: i.credential = cred i.save() @@ -135,14 +141,12 @@ def migrate_credential(apps, schema_editor): if cred.team is not None: cred.team.admin_role.children.add(cred.owner_role) cred.team.member_role.children.add(cred.usage_role) - cred.user = None - cred.team = None + cred.user, cred.team = None, None cred.save() elif cred.user is not None: cred.user.admin_role.children.add(cred.owner_role) - cred.user = None - cred.team = None + cred.user, cred.team = None, None cred.save() # no match found, log