List IDs of parent projects

* Also adds support for both subtree and parent ids to
  the fake manager

Change-Id: I1e3de42fe45ebbb9b078bfc99a06ff70880ba46f
This commit is contained in:
Amelia Cordwell 2018-01-29 14:50:30 +13:00
parent f8b8e0c97f
commit b25617a357
2 changed files with 29 additions and 1 deletions

View File

@ -357,7 +357,34 @@ class FakeManager(object):
def get_project(self, project_id, subtree_as_ids=False,
parents_as_ids=False):
global identity_cache
return identity_cache['projects'].get(project_id, None)
project = identity_cache['projects'].get(project_id, None)
if subtree_as_ids:
subtree_list = []
prev_layer = [project.id, ]
current_layer = True
while current_layer:
current_layer = [s_project.id for s_project in
identity_cache['projects'].values()
if project.parent_id in prev_layer]
prev_layer = current_layer
subtree_list.append(current_layer)
project.subtree_ids = subtree_list
if parents_as_ids:
parent_list = []
parent_id = project.parent_id
parent_list.append(parent_id)
while identity_cache['projects'].get(parent_id, None):
parent_id = identity_cache['projects'].get(parent_id, None)
parent_list.append(parent_id)
project.parent_ids = parent_list
project.root = parent_id
project.depth = len(parent_list)
return project
def create_project(self, project_name, created_on, parent=None,
domain='default', description=""):

View File

@ -273,6 +273,7 @@ class IdentityManager(object): # pragma: no cover
value = value.values()[0]
project.root = last_root
project.depth = depth
project.parent_ids = subtree_ids_list(project.parents)
if subtree_as_ids:
project.subtree_ids = subtree_ids_list(project.subtree)
return project