def test_generate_html(self): exex = Mock(spec=[]) # no attributes p_applier = Mock() p_applier.layers = {'exex': exex} p_applier.apply_layers.side_effect = lambda n: n # identity builder = HTMLBuilder(None, p_applier, None) builder.tree = { 'label': ['1234'], 'children': [], 'node_type': 'regtext', 'text': '' } builder.generate_html() # No explosion so far means this works for most layers exex = Mock() # "includes" any attribute p_applier = Mock() p_applier.layers = {'exex': exex} p_applier.apply_layers.side_effect = lambda n: n # identity builder = HTMLBuilder(None, p_applier, None) builder.tree = { 'label': ['1234'], 'children': [], 'node_type': 'regtext', 'text': '' } builder.generate_html() self.assertTrue(exex.preprocess_root.called) self.assertEqual(exex.preprocess_root.call_args[0][0], builder.tree)
def generate_html_tree(subtree): """Use the HTMLBuilder to generate a version of this subtree with appropriate markup. Currently, includes no layers""" builder = HTMLBuilder(*LayerCreator().get_appliers()) builder.tree = subtree builder.generate_html() return {'node': builder.tree, 'markup_page_type': 'reg-section'}
def test_generate_html(self): exex = Mock(spec=[]) # no attributes p_applier = Mock() p_applier.layers = {'exex': exex} p_applier.apply_layers.side_effect = lambda n: n # identity builder = HTMLBuilder(None, p_applier, None) builder.tree = {'label': ['1234'], 'children': [], 'node_type': 'regtext', 'text': ''} builder.generate_html() # No explosion so far means this works for most layers exex = Mock() # "includes" any attribute p_applier = Mock() p_applier.layers = {'exex': exex} p_applier.apply_layers.side_effect = lambda n: n # identity builder = HTMLBuilder(None, p_applier, None) builder.tree = {'label': ['1234'], 'children': [], 'node_type': 'regtext', 'text': ''} builder.generate_html() self.assertTrue(exex.preprocess_root.called) self.assertEqual(exex.preprocess_root.call_args[0][0], builder.tree)
def get_context_data(self, **kwargs): # We don't want to run the content data of PartialView -- it assumes # we will be applying layers context = super(PartialView, self).get_context_data(**kwargs) label_id = context['label_id'] older = context['version'] newer = context['newer_version'] tree = generator.get_tree_paragraph(label_id, older) if tree is None: #TODO We need a more complicated check here to see if the diffs #add the requested section. If not -> 404 tree = {} appliers = get_appliers(label_id, older, newer) builder = HTMLBuilder(*appliers) builder.tree = tree if not builder.tree: return error_handling.handle_generic_404(self.request) builder.generate_html() child_of_root = builder.tree if builder.tree['node_type'] == REGTEXT: child_of_root = { 'node_type': EMPTYPART, 'children': [builder.tree] } context['tree'] = {'children': [child_of_root]} context['markup_page_type'] = 'diff' regpart = label_id.split('-')[0] old_toc = fetch_toc(regpart, older) diff = generator.get_diff_json(regpart, older, newer) from_version = self.request.GET.get('from_version', older) context['TOC'] = diff_toc(older, newer, old_toc, diff, from_version) context['navigation'] = self.footer_nav(label_id, context['TOC'], older, newer, from_version) return context
def get_context_data(self, **kwargs): # We don't want to run the content data of PartialView -- it assumes # we will be applying layers context = super(PartialView, self).get_context_data(**kwargs) label_id = context['label_id'] older = context['version'] newer = context['newer_version'] tree = generator.get_tree_paragraph(label_id, older) if tree is None: #TODO We need a more complicated check here to see if the diffs #add the requested section. If not -> 404 tree = {} appliers = get_appliers(label_id, older, newer) builder = HTMLBuilder(*appliers) builder.tree = tree if not builder.tree: return error_handling.handle_generic_404(self.request) builder.generate_html() child_of_root = builder.tree if builder.tree['node_type'] == REGTEXT: child_of_root = { 'node_type': EMPTYPART, 'children': [builder.tree]} context['tree'] = {'children': [child_of_root]} context['markup_page_type'] = 'diff' regpart = label_id.split('-')[0] old_toc = fetch_toc(regpart, older) diff = generator.get_diff_json(regpart, older, newer) from_version = self.request.GET.get('from_version', older) context['TOC'] = diff_toc(older, newer, old_toc, diff, from_version) context['navigation'] = self.footer_nav(label_id, context['TOC'], older, newer, from_version) return context
def generate_html(regulation_tree, layer_appliers): builder = HTMLBuilder(*layer_appliers) builder.tree = regulation_tree builder.generate_html() return builder
def get_builder(regulation, version, inline_applier, p_applier, s_applier): """ Returns an HTML builder with the appliers, and the regulation tree. """ builder = HTMLBuilder(inline_applier, p_applier, s_applier) builder.tree = get_regulation(regulation, version) return builder