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,
        }
 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)
Example #3
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)
        appliers = get_appliers(label_id, versions)

        builder = CFRChangeHTMLBuilder(
            *appliers, 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,
        }
Example #4
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 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)
class CFRChangeHTMLBuilderTests(TestCase):
    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)

    def test_accepts_comment(self):
        """We can only comment on changed paragraphs"""
        node = {
            'label': ['111', '21', 'a'],
            'text': 'Something',
            'node_type': 'regtext',
            'children': []
        }
        self.builder.process_node(node)
        self.assertFalse(node.get('accepts_comments'))
        self.assertEqual(node.get('stars_collapse'), 'full')

        node['label'] = ['111', '22']
        self.builder.process_node(node)
        self.assertFalse(node.get('accepts_comments'))
        self.assertEqual(node.get('stars_collapse'), 'inline')

        node['label'] = ['111', '22', 'a', '5']
        self.builder.process_node(node)
        self.assertFalse(node.get('accepts_comments'))
        self.assertEqual(node.get('stars_collapse'), 'full')

        node['label'] = ['111', '22', 'a']
        self.builder.process_node(node)
        self.assertTrue(node.get('accepts_comments'))
        self.assertEqual(node.get('stars_collapse'), 'none')

    def test_preprocess(self):
        diffs = DiffApplier(
            {
                '111-22-a': {
                    'op': 'deleted'
                },
                '111-33-b-5-v': {
                    'op': 'deleted'
                }
            }, '111-22')
        builder = CFRChangeHTMLBuilder(self.builder.inline_applier,
                                       self.builder.p_applier,
                                       self.builder.search_applier, 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')})
class CFRChangeHTMLBuilderTests(TestCase):
    def setUp(self):
        diffs = DiffApplier({'111-22-a': {'op': 'deleted'}}, '111-22')
        self.builder = CFRChangeHTMLBuilder([], diffs)

    def test_accepts_comment(self):
        """We can only comment on changed paragraphs"""
        node = {
            'label': ['111', '21', 'a'],
            'text': 'Something',
            'node_type': 'regtext',
            'children': []
        }
        self.builder.process_node(node)
        self.assertFalse(node.get('accepts_comments'))
        self.assertEqual(node.get('stars_collapse'), 'full')

        node['label'] = ['111', '22']
        self.builder.process_node(node)
        self.assertFalse(node.get('accepts_comments'))
        self.assertEqual(node.get('stars_collapse'), 'inline')

        node['label'] = ['111', '22', 'a', '5']
        self.builder.process_node(node)
        self.assertFalse(node.get('accepts_comments'))
        self.assertEqual(node.get('stars_collapse'), 'full')

        node['label'] = ['111', '22', 'a']
        self.builder.process_node(node)
        self.assertTrue(node.get('accepts_comments'))
        self.assertEqual(node.get('stars_collapse'), 'none')

    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')})
Example #8
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')})
class CFRChangeHTMLBuilderTests(TestCase):
    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)

    def test_accepts_comment(self):
        """We can only comment on changed paragraphs"""
        node = {'label': ['111', '21', 'a'], 'text': 'Something',
                'node_type': 'regtext', 'children': []}
        self.builder.process_node(node)
        self.assertFalse(node.get('accepts_comments'))
        self.assertEqual(node.get('stars_collapse'), 'full')

        node['label'] = ['111', '22']
        self.builder.process_node(node)
        self.assertFalse(node.get('accepts_comments'))
        self.assertEqual(node.get('stars_collapse'), 'inline')

        node['label'] = ['111', '22', 'a', '5']
        self.builder.process_node(node)
        self.assertFalse(node.get('accepts_comments'))
        self.assertEqual(node.get('stars_collapse'), 'full')

        node['label'] = ['111', '22', 'a']
        self.builder.process_node(node)
        self.assertTrue(node.get('accepts_comments'))
        self.assertEqual(node.get('stars_collapse'), 'none')

    def test_preprocess(self):
        diffs = DiffApplier({'111-22-a': {'op': 'deleted'},
                             '111-33-b-5-v': {'op': 'deleted'}}, '111-22')
        builder = CFRChangeHTMLBuilder(
            self.builder.inline_applier, self.builder.p_applier,
            self.builder.search_applier, 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')})
class CFRChangeHTMLBuilderTests(TestCase):
    def setUp(self):
        diffs = DiffApplier({'111-22-a': {'op': 'deleted'}}, '111-22')
        self.builder = CFRChangeHTMLBuilder([], diffs)

    def test_accepts_comment(self):
        """We can only comment on changed paragraphs"""
        node = {'label': ['111', '21', 'a'], 'text': 'Something',
                'node_type': 'regtext', 'children': []}
        self.builder.process_node(node)
        self.assertFalse(node.get('accepts_comments'))
        self.assertEqual(node.get('stars_collapse'), 'full')

        node['label'] = ['111', '22']
        self.builder.process_node(node)
        self.assertFalse(node.get('accepts_comments'))
        self.assertEqual(node.get('stars_collapse'), 'inline')

        node['label'] = ['111', '22', 'a', '5']
        self.builder.process_node(node)
        self.assertFalse(node.get('accepts_comments'))
        self.assertEqual(node.get('stars_collapse'), 'full')

        node['label'] = ['111', '22', 'a']
        self.builder.process_node(node)
        self.assertTrue(node.get('accepts_comments'))
        self.assertEqual(node.get('stars_collapse'), 'none')

    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)
 def setUp(self):
     diffs = DiffApplier({'111-22-a': {'op': 'deleted'}}, '111-22')
     self.builder = CFRChangeHTMLBuilder([], diffs)