Switch to side-by-side view

--- a/scripts/fix-subroles.py
+++ b/scripts/fix-subroles.py
@@ -18,7 +18,8 @@
 
 from allura import model as M
 
-log = logging.getLogger(__name__)
+log = logging.getLogger('fix-subroles')
+log.addHandler(logging.StreamHandler(sys.stdout))
 
 def main():
     test = sys.argv[-1] == 'test'
@@ -35,6 +36,8 @@
                 child_role = M.ProjectRole.by_name(child, project=project)
                 project_roles[parent] = parent_role
                 project_roles[child] = child_role
+                if not (parent_role and child_role):
+                    break
                 if len(parent_role.roles) != 1 or parent_role.roles[0] != child_role._id:
                     if test:
                         log.info('Would reset %s subroles for project "%s".' % (parent, project_name))
@@ -43,6 +46,10 @@
                         log.info('Resetting %s subroles for project "%s".' % (parent, project_name))
                         parent_role.roles = [child_role._id]
                         ThreadLocalORMSession.flush_all()
+            if not (project_roles['Admin'] and project_roles['Developer'] \
+                and project_roles['Member']):
+                log.info('Skipping "%s": missing Admin, Developer, or Member roles' % project_name)
+                continue
             for user in project.users():
                 pr = user.project_role(project=project)
                 if not pr.roles: continue