From b1d93a7fc6f154df2b511d8e0eb6bc8f4f787e50 Mon Sep 17 00:00:00 2001
From: Nathaniel Kofalt <nathaniel@kofalt.com>
Date: Wed, 6 Jan 2016 15:00:36 -0600
Subject: [PATCH] update rule hierarchy walking for project objects

---
 api/rules.py | 13 +++++++------
 1 file changed, 7 insertions(+), 6 deletions(-)

diff --git a/api/rules.py b/api/rules.py
index 32c910fc..544c35a9 100644
--- a/api/rules.py
+++ b/api/rules.py
@@ -136,8 +136,7 @@ def create_jobs(db, container, container_type, file_):
     job_list = []
 
     # Get configured rules for this project
-    project = get_project_for_container(db, container)
-    rules = project.get('rules', [])
+    rules = get_rules_for_container(db, container)
 
     # Add hardcoded rules that cannot be removed or changed
     for hardcoded_rule in HARDCODED_RULES:
@@ -153,14 +152,16 @@ def create_jobs(db, container, container_type, file_):
     return job_list
 
 # TODO: consider moving to a module that has a variety of hierarchy-management helper functions
-def get_project_for_container(db, container):
+def get_rules_for_container(db, container):
     """
     Recursively walk the hierarchy until the project object is found.
     """
     if 'session' in container:
         session = db.sessions.find_one({'_id': container['session']})
-        return get_project_for_container(db, session)
+        return get_rules_for_container(db, session)
     elif 'project' in container:
         project = db.projects.find_one({'_id': container['project']})
-        return project
-    raise Exception('Hierarchy walking not implemented for container ' + str(container['_id']))
+        return get_rules_for_container(db, project)
+    else:
+        # Assume container is a project, or a collection (which currently cannot have a rules property)
+        return container.get('rules', [])
-- 
GitLab