def get_context_data(self, **kwargs): # skip our parent context = super(PartialView, self).get_context_data(**kwargs) label_id = context['label_id'] label = label_id.split('-') reg_part = label[0] version = context['version'] context['navigation'] = self.section_navigation(label_id, version) interp = generator.get_tree_paragraph(reg_part + '-Interp', version) if not interp: raise Http404 subterp_sects = filter_by_subterp(interp['children'], label, version) if not subterp_sects: raise Http404 context['markup_page_type'] = 'reg-section' html_label = node_types.to_markup_id(label_id.split('-')) interp['children'] = subterp_sects inline_applier, p_applier, s_applier = self.determine_appliers( reg_part + '-Interp', version) builder = generate_html(interp, (inline_applier, p_applier, s_applier)) interp = builder.tree interp['html_label'] = html_label context['tree'] = {'children': [interp]} return context
def get_context_data(self, **kwargs): # skip our parent context = super(PartialView, self).get_context_data(**kwargs) label_id = context['label_id'] label = label_id.split('-') reg_part = label[0] version = context['version'] context['navigation'] = self.section_navigation(label_id, version) interp = generator.get_tree_paragraph(reg_part + '-Interp', version) if not interp: raise Http404 subterp_sects = filter_by_subterp(interp['children'], label, version) if not subterp_sects: raise Http404 context['markup_page_type'] = 'reg-section' html_label = node_types.to_markup_id(label_id.split('-')) interp['children'] = subterp_sects # interp['label] is defined so that the template receives the # appropriate markup ID, matching the rendered subterp and not # the parent node in the tree interp['label'] = label layers = list(self.determine_layers(reg_part + '-Interp', version)) builder = CFRHTMLBuilder(layers) builder.tree = interp builder.generate_html() interp = builder.tree interp['html_label'] = html_label context['tree'] = {'children': [interp]} return context
def process_node(self, node): """Every node passes through this function on the way to being rendered. Importantly, this adds the `marked_up` field, which contains the HTML version of node's text (after applying all relevant layers) and the `template_name` field, which defines how this node should be rendered.""" node['label_id'] = '-'.join(node['label']) self.process_node_title(node) node['is_collapsed'] = self.is_collapsed(node) node['html_label'] = to_markup_id(node['label']) node['markup_id'] = "-".join(node['html_label']) node['tree_level'] = len(node['label']) - 1 list_level = self.list_level(node['label'], node['node_type']) node['list_level'] = list_level if len(node['text']): inline_elements = self.inline_applier.get_layer_pairs( node['label_id'], node['text']) search_elements = self.search_applier.get_layer_pairs( node['label_id']) if self.diff_applier: node['marked_up'] = self.diff_applier.apply_diff( node['text'], node['label_id']) layers_applier = LayersApplier() layers_applier.enqueue_from_list(inline_elements) layers_applier.enqueue_from_list(search_elements) node['marked_up'] = layers_applier.apply_layers( node.get('marked_up', node['text'])) node['marked_up'] = self.section_space(node['marked_up']) node['marked_up'] = flatten_links(node['marked_up']) node = self.p_applier.apply_layers(node) node['template_name'] = RegulationsConfig.custom_tpls.get( node['label_id'], RegulationsConfig.node_type_tpls[node['node_type'].lower()]) if 'TOC' in node: for l in node['TOC']: l['label'] = self.section_space(l['label']) if 'interp' in node and 'markup' in node['interp']: node['interp']['markup'] = self.section_space( node['interp']['markup']) if node['node_type'] == INTERP: self.modify_interp_node(node) for c in node['children']: self.process_node(c)
def process_node(self, node, indexes=None): """Every node passes through this function on the way to being rendered. Importantly, this adds the `marked_up` field, which contains the HTML version of node's text (after applying all relevant layers) and the `template_name` field, which defines how this node should be rendered.""" node['label_id'] = '-'.join(node['label']) self.process_node_title(node) node['is_collapsed'] = self.is_collapsed(node) node['indexes'] = indexes or [] node['html_label'] = node_types.to_markup_id(node['label']) node['markup_id'] = "-".join(node['html_label']) node['full_id'] = "-".join(self.id_prefix + node['html_label']) node['tree_level'] = len(node['label']) - 1 node['human_label'] = self.human_label(node) node['list_level'] = self.list_level(node['label'], node['node_type']) if len(node['text']): inline_elements = self.inline_applier.get_layer_pairs( node['label_id'], node['text']) search_elements = self.search_applier.get_layer_pairs( node['label_id']) if self.diff_applier: node['marked_up'] = self.diff_applier.apply_diff( node['text'], node['label_id']) layers_applier = LayersApplier() layers_applier.enqueue_from_list(inline_elements) layers_applier.enqueue_from_list(search_elements) node['marked_up'] = layers_applier.apply_layers( node.get('marked_up', node['text'])) node['marked_up'] = flatten_links(node['marked_up']) node = self.p_applier.apply_layers(node) node['template_name'] = RegulationsConfig.custom_tpls.get( node['label_id'], RegulationsConfig.node_type_tpls[node['node_type'].lower()]) for idx, child in enumerate(node['children']): self.process_node(child, indexes=node['indexes'] + [idx])
def fetch(self, citation, version, sectional): key = (tuple(citation), version, sectional) if key not in self.rev_cache: url = '' if sectional: view_name = 'chrome_section_view' if len(citation) > 1 and citation[1] == 'Interp': view_name = 'chrome_paragraph_view' elif 'Interp' in citation: view_name = 'chrome_subterp_view' label = self.view_label_id(citation, version) try: url = reverse(view_name, args=(label, version)) except NoReverseMatch: #XXX We have some errors in our layers. Once those are # fixed, we need to revisit this. pass self.rev_cache[key] = url + '#' + '-'.join(to_markup_id(citation)) return self.rev_cache[key]
def test_change_appendix(self): node_parts_before = ['243', 'A', '30(a)'] node_parts_after = node_types.to_markup_id(node_parts_before) node_string = "-".join(node_parts_after) self.assertEqual('243-A-30a', node_string)