def test_invalid_foreign_key(self): instance = TestModelWithInvalidForeignKey.objects.create( fk=Site.objects.get()) with self.assertRaises(ImproperlyConfigured) as e: extract_segments(instance) self.assertEqual( str(e.exception), "The foreign key `wagtail_localize_test.TestModelWithInvalidForeignKey.fk` " "was registered as a translatable field but the model it points to " "`wagtailcore.Site` is not translatable")
def test_listblock(self): block_id = uuid.uuid4() page = make_test_page_with_streamfield_block( str(block_id), "test_listblock", [ { "type": "item", "value": "Test content", "id": "11111111-1111-1111-1111-111111111111", }, { "type": "item", "value": "Some more test content", "id": "22222222-2222-2222-2222-222222222222", }, ], ) expected_segments = [ StringSegmentValue(f"test_streamfield.{block_id}.{item.id}", item.value) for item in page.test_streamfield[0].value.bound_blocks ] segments = extract_segments(page) self.assertEqual(segments, expected_segments)
def test_urlfield(self): page = make_test_page(test_urlfield="http://test-content.com/foo") segments = extract_segments(page) self.assertEqual(segments, [ StringSegmentValue("test_urlfield", "http://test-content.com/foo") ])
def test_emailfield(self): page = make_test_page(test_emailfield="*****@*****.**") segments = extract_segments(page) self.assertEqual( segments, [StringSegmentValue("test_emailfield", "*****@*****.**")])
def test_non_overridable_synchronised_textfield(self): page = make_test_page( test_not_overridable_synchronized_textfield="Test content") segments = extract_segments(page) # Shouldn't extract any segments as this isn't overridable self.assertEqual(segments, [])
def test_snippet(self): test_snippet = TestSnippet.objects.create(field="Test content") page = make_test_page(test_snippet=test_snippet) segments = extract_segments(page) self.assertEqual(segments, [ RelatedObjectSegmentValue.from_instance("test_snippet", test_snippet) ])
def test_nonparentalchildobjects(self): page = make_test_page() page.save() TestNonParentalChildObject.objects.create(page=page, field="Test content") segments = extract_segments(page) # No segments this time as we don't extract ManyToOneRel's that don't use ParentalKeys self.assertEqual(segments, [])
def test_customblockwithoutextractmethod(self): block_id = uuid.uuid4() page = make_test_page_with_streamfield_block( str(block_id), "test_customblockwithoutextractmethod", {}, ) segments = extract_segments(page) self.assertEqual(segments, [])
def extract_terms(instance): terms = {} for segment in extract_segments(instance): if isinstance(segment, StringSegmentValue): if segment.path == 'slug': continue terms[segment.path] = extract_terms_from_text( segment.render_text()) return terms
def test_richtextfield(self): page = make_test_page(test_richtextfield=RICH_TEXT_TEST_INPUT) segments = extract_segments(page) self.assertEqual( segments, [ segment.wrap("test_richtextfield") for segment in RICH_TEXT_TEST_OUTPUT ], )
def test_blockquoteblock(self): block_id = uuid.uuid4() page = make_test_page_with_streamfield_block(str(block_id), "test_blockquoteblock", "Test content") segments = extract_segments(page) self.assertEqual(segments, [ StringSegmentValue(f"test_streamfield.{block_id}", "Test content") ])
def test_emailblock(self): block_id = uuid.uuid4() page = make_test_page_with_streamfield_block(str(block_id), "test_emailblock", "*****@*****.**") segments = extract_segments(page) self.assertEqual(segments, [ StringSegmentValue(f"test_streamfield.{block_id}", "*****@*****.**") ])
def test_synchronised_textfield(self): page = make_test_page(test_synchronized_textfield="Test content") segments = extract_segments(page) self.assertEqual( segments, [ OverridableSegmentValue("test_synchronized_textfield", "Test content") ], )
def test_customfield(self): page = make_test_page(test_customfield="Test content") segments = extract_segments(page) self.assertEqual( segments, [ StringSegmentValue("test_customfield.foo", "Test content and some extra") ], )
def prepare_source(source): # Extract segments from source and save them into translation memory segments = extract_segments(source.as_instance()) insert_segments(source, source.locale_id, segments) # Recurse into any related objects for segment in segments: if not isinstance(segment, RelatedObjectSegmentValue): continue related_source, created = TranslationSource.from_instance( segment.get_instance(source.locale)) prepare_source(related_source)
def test_urlblock(self): block_id = uuid.uuid4() page = make_test_page_with_streamfield_block( str(block_id), "test_urlblock", "http://test-content.com/foo") segments = extract_segments(page) self.assertEqual( segments, [ StringSegmentValue(f"test_streamfield.{block_id}", "http://test-content.com/foo") ], )
def test_rawhtmlblock(self): block_id = uuid.uuid4() page = make_test_page_with_streamfield_block(str(block_id), "test_rawhtmlblock", RICH_TEXT_TEST_INPUT) segments = extract_segments(page) self.assertEqual( segments, [ segment.wrap(f"test_streamfield.{block_id}") for segment in RICH_TEXT_TEST_OUTPUT ], )
def test_embedblock(self): block_id = uuid.uuid4() page = make_test_page_with_streamfield_block( str(block_id), "test_embedblock", "https://www.youtube.com/watch?v=aBByJQCaaEA") segments = extract_segments(page) self.assertEqual( segments, [ OverridableSegmentValue( f"test_streamfield.{block_id}", "https://www.youtube.com/watch?v=aBByJQCaaEA") ], )
def test_listblock(self): block_id = uuid.uuid4() page = make_test_page_with_streamfield_block( str(block_id), "test_listblock", ["Test content", "Some more test content"]) segments = extract_segments(page) self.assertEqual( segments, [ StringSegmentValue(f"test_streamfield.{block_id}", "Test content"), StringSegmentValue(f"test_streamfield.{block_id}", "Some more test content"), ], )
def test_childobjects(self): page = make_test_page() page.test_childobjects.add(TestChildObject(field="Test content")) page.save() child_translation_key = TestChildObject.objects.get().translation_key segments = extract_segments(page) self.assertEqual( segments, [ StringSegmentValue( f"test_childobjects.{child_translation_key}.field", "Test content") ], )
def test_customstructblock(self): block_id = uuid.uuid4() page = make_test_page_with_streamfield_block( str(block_id), "test_customstructblock", { "field_a": "Test content", "field_b": "Some more test content" }, ) segments = extract_segments(page) self.assertEqual( segments, [ StringSegmentValue( f"test_streamfield.{block_id}.foo", "Test content / Some more test content", ) ], )
def test_nestedstreamblock(self): block_id = uuid.uuid4() nested_block_id = uuid.uuid4() page = make_test_page_with_streamfield_block( str(block_id), "test_nestedstreamblock", [{ "id": str(nested_block_id), "type": "block_a", "value": "Test content" }], ) segments = extract_segments(page) self.assertEqual( segments, [ StringSegmentValue( f"test_streamfield.{block_id}.{nested_block_id}", "Test content") ], )
def test_slugfield(self): page = make_test_page(test_slugfield="test-content") segments = extract_segments(page) self.assertEqual( segments, [StringSegmentValue("test_slugfield", "test-content")])
def test_null_charfield(self): page = make_test_page(test_charfield=None) segments = extract_segments(page) self.assertEqual(segments, [])