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")
Ejemplo n.º 2
0
    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)
Ejemplo n.º 3
0
    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")
        ])
Ejemplo n.º 4
0
    def test_emailfield(self):
        page = make_test_page(test_emailfield="*****@*****.**")
        segments = extract_segments(page)

        self.assertEqual(
            segments,
            [StringSegmentValue("test_emailfield", "*****@*****.**")])
Ejemplo n.º 5
0
    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, [])
Ejemplo n.º 6
0
    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)
        ])
Ejemplo n.º 7
0
    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, [])
Ejemplo n.º 8
0
    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, [])
Ejemplo n.º 9
0
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
Ejemplo n.º 10
0
    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
            ],
        )
Ejemplo n.º 11
0
    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")
        ])
Ejemplo n.º 12
0
    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}",
                               "*****@*****.**")
        ])
Ejemplo n.º 13
0
    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")
            ],
        )
Ejemplo n.º 14
0
    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")
            ],
        )
Ejemplo n.º 15
0
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)
Ejemplo n.º 16
0
    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")
            ],
        )
Ejemplo n.º 17
0
    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")
            ],
        )
Ejemplo n.º 19
0
    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"),
            ],
        )
Ejemplo n.º 20
0
    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")
            ],
        )
Ejemplo n.º 21
0
    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",
                )
            ],
        )
Ejemplo n.º 22
0
    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")
            ],
        )
Ejemplo n.º 23
0
    def test_slugfield(self):
        page = make_test_page(test_slugfield="test-content")
        segments = extract_segments(page)

        self.assertEqual(
            segments, [StringSegmentValue("test_slugfield", "test-content")])
Ejemplo n.º 24
0
    def test_null_charfield(self):
        page = make_test_page(test_charfield=None)
        segments = extract_segments(page)

        self.assertEqual(segments, [])