From 49faf212ef77c2f1e00636f830e3155a168e0b5d Mon Sep 17 00:00:00 2001 From: AlanCoding Date: Fri, 24 Mar 2017 09:25:24 -0400 Subject: [PATCH] consolidate RBAC is_implicit_parent code --- awx/main/fields.py | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/awx/main/fields.py b/awx/main/fields.py index 8d955ab6ce..51b0efd2ed 100644 --- a/awx/main/fields.py +++ b/awx/main/fields.py @@ -111,7 +111,11 @@ def is_implicit_parent(parent_role, child_role): # Check to see if the role matches any in the implicit parents list for implicit_parent_path in implicit_parents: - if '.' in implicit_parent_path: + if implicit_parent_path.startswith('singleton:'): + # Singleton role isn't an object role, `singleton_name` uniquely identifies it + if parent_role.is_singleton() and parent_role.singleton_name == implicit_parent_path[10:]: + return True + else: # Walk over multiple related objects to obtain the implicit parent related_obj = child_role.content_object for next_field in implicit_parent_path.split('.'): @@ -120,14 +124,6 @@ def is_implicit_parent(parent_role, child_role): break if related_obj and parent_role == related_obj: return True - elif implicit_parent_path.startswith('singleton:'): - # Singleton role isn't an object role, `singleton_name` uniquely identifies it - if parent_role.is_singleton() and parent_role.singleton_name == implicit_parent_path[10:]: - return True - else: - # Direct field on the content object - if parent_role == getattr(child_role.content_object, implicit_parent_path): - return True return False