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)
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, }
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 }
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 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)