Exemplo n.º 1
0
 def setUp(self):
     inline, par, sr = Mock(), Mock(), Mock()
     inline.get_layer_pairs.return_value = []
     par.apply_layers.side_effect = lambda x: x
     sr.get_layer_pairs.return_value = []
     diffs = DiffApplier({'111-22-a': {'op': 'deleted'}}, '111-22')
     self.builder = CFRChangeHTMLBuilder(inline, par, sr, diffs)
Exemplo n.º 2
0
    def regtext_changes_context(cls, amendments, version_info, label_id,
                                doc_number, toc_position):
        """Generate diffs for the changed section"""
        cfr_part = label_id.split('-')[0]
        relevant = []
        for amd in amendments:
            changes = amd.get('changes', [])
            keys = {change[0] for change in changes}
            if any(is_contained_in(key, label_id) for key in keys):
                relevant.append(amd)

        versions = Versions(version_info[cfr_part]['left'],
                            version_info[cfr_part]['right'])
        left_tree = ApiReader().regulation(label_id, versions.older)
        diff_applier = generator.get_diff_applier(label_id, versions.older,
                                                  versions.newer)
        if diff_applier is None:
            raise error_handling.MissingContentException()

        layers = list(generator.diff_layers(versions, label_id))

        builder = CFRChangeHTMLBuilder(layers,
                                       diff_applier,
                                       id_prefix=[str(doc_number), 'cfr'],
                                       index_prefix=[1, toc_position])
        builder.tree = left_tree or {}
        builder.generate_html()

        return {
            'instructions': [a['instruction'] for a in relevant],
            'subparts':
            list(cls.subpart_changes(doc_number, relevant, label_id)),
            'tree': builder.tree,
        }
Exemplo n.º 3
0
    def regtext_changes_context(amendments, version_info, label_id,
                                doc_number):
        """Generate diffs for the changed section"""
        cfr_part = label_id.split('-')[0]
        relevant = []
        for amd in amendments:
            changes = amd.get('changes', [])
            if isinstance(changes, dict):
                changes = list(changes.items())
            keys = {change[0] for change in changes}
            if any(is_contained_in(key, label_id) for key in keys):
                relevant.append(amd)

        versions = Versions(version_info[cfr_part]['left'],
                            version_info[cfr_part]['right'])
        tree = ApiReader().regulation(label_id, versions.older)
        appliers = get_appliers(label_id, versions)

        builder = CFRChangeHTMLBuilder(*appliers,
                                       id_prefix=[str(doc_number), 'cfr'])
        builder.tree = tree
        builder.generate_html()
        return {
            'instructions': [a['instruction'] for a in relevant],
            'tree': builder.tree
        }
 def test_preprocess(self):
     diffs = DiffApplier(
         {
             '111-22-a': {
                 'op': 'deleted'
             },
             '111-33-b-5-v': {
                 'op': 'deleted'
             }
         }, '111-22')
     builder = CFRChangeHTMLBuilder([], diffs)
     self.assertEqual(
         builder.diff_paths, {('111', ), ('111', '22'), ('111', '22', 'a'),
                              ('111', '33'), ('111', '33', 'b'),
                              ('111', '33', 'b', '5'),
                              ('111', '33', 'b', '5', 'v')})
 def setUp(self):
     diffs = DiffApplier({'111-22-a': {'op': 'deleted'}}, '111-22')
     self.builder = CFRChangeHTMLBuilder([], diffs)