<%! import pprint as pp %> <% globalCounter = {} def _recurseModuleTree(data, depth=0): output = [] for i, mod in enumerate(data): # assign a unique DOM ID to this module globalCounter.setdefault(mod['className'], -1) globalCounter[mod['className']] += 1 output.append('
') output.append('

') output.append(mod['className']) output.append(' (DOM ID=%s_%s_%s_%s)' % (mod['className'], globalCounter[mod['className']], depth,i)) output.append('

') printed = mod.copy() if 'children' in printed: del printed['children'] output.append('
')
        output.append(pp.pformat(printed))
        output.append('
') if mod.get('children'): output.append(_recurseModuleTree(mod['children'], depth=depth+1)) output.append('
') return '\n'.join(output) def renderModuleTree(): modules = viewConfig['modules'] return _recurseModuleTree(modules) def renderParsedTree(): return pp.pformat(modules) %> <%inherit file="//layout/base.html" /> <%def name="css()">
${renderModuleTree()}
${renderParsedTree()}