コード例 #1
0
 def get(self, request_body):
     request_json = json.dumps(request_body)
     digest = digest_for_source('local', request_json)
     return self.client.post('/wagtail-transfer/api/objects/?digest=%s' %
                             digest,
                             request_json,
                             content_type='application/json')
コード例 #2
0
    def test_streamfield_with_null_page(self):
        # We should gracefully handle null values in non-required chooser blocks
        page = PageWithStreamField(
            title="I have a streamfield",
            body=json.dumps([
                {
                    'type': 'link_block',
                    'value': {
                        'page': None,
                        'text': 'Empty test'
                    },
                    'id': 'fc3b0d3d-d316-4271-9e31-84919558188a'
                },
            ]))
        parent_page = Page.objects.get(url_path='/home/existing-child-page/')
        parent_page.add_child(instance=page)

        digest = digest_for_source('local', str(page.id))
        response = self.client.get(
            '/wagtail-transfer/api/pages/%d/?digest=%s' % (page.id, digest))

        data = json.loads(response.content)
        # result should have a mapping for the page we just created, and its parent
        page_mappings = filter(
            lambda mapping: mapping[0] == 'wagtailcore.page', data['mappings'])
        self.assertEqual(len(list(page_mappings)), 2)
コード例 #3
0
 def test_correct_digest(self):
     digest = digest_for_source(
         'local',
         'child_of=root&fields=parent%2Cchildren&limit=20&offset=0')
     response = self.client.get(
         f'/wagtail-transfer/api/chooser/pages/?child_of=root&fields=parent%2Cchildren&limit=20&offset=0&digest={digest}'
     )
     self.assertEqual(response.status_code, 200)
コード例 #4
0
    def test_streamfield_with_page_links(self):
        # Check that page links in a complex nested StreamField - with StreamBlock, StructBlock, and ListBlock -
        # are all picked up in mappings

        page = PageWithStreamField(
            title="I have a streamfield",
            body=json.dumps([{
                'type': 'link_block',
                'value': {
                    'page': 1,
                    'text': 'Test'
                },
                'id': 'fc3b0d3d-d316-4271-9e31-84919558188a'
            }, {
                'type': 'page',
                'value': 2,
                'id': 'c6d07d3a-72d4-445e-8fa5-b34107291176'
            }, {
                'type':
                'stream',
                'value': [{
                    'type': 'page',
                    'value': 3,
                    'id': '8c0d7de7-4f77-4477-be67-7d990d0bfb82'
                }],
                'id':
                '21ffe52a-c0fc-4ecc-92f1-17b356c9cc94'
            }, {
                'type': 'list_of_pages',
                'value': [5],
                'id': '17b972cb-a952-4940-87e2-e4eb00703997'
            }]))
        parent_page = Page.objects.get(url_path='/home/existing-child-page/')
        parent_page.add_child(instance=page)

        digest = digest_for_source('local', str(page.id))
        response = self.client.get(
            '/wagtail-transfer/api/pages/%d/?digest=%s' % (page.id, digest))

        data = json.loads(response.content)

        # test PageChooserBlock in StructBlock
        self.assertIn(
            ['wagtailcore.page', 1, '11111111-1111-1111-1111-111111111111'],
            data['mappings'])
        # test un-nested PageChooserBlock
        self.assertIn(
            ['wagtailcore.page', 2, "22222222-2222-2222-2222-222222222222"],
            data['mappings'])
        # test PageChooserBlock in StreamBlock
        self.assertIn(
            ['wagtailcore.page', 3, "33333333-3333-3333-3333-333333333333"],
            data['mappings'])
        # test PageChooserBlock in ListBlock
        self.assertIn(
            ['wagtailcore.page', 5, "00017017-5555-5555-5555-555555555555"],
            data['mappings'])
コード例 #5
0
    def test_list_snippet_models(self, get, post):
        # Test the model chooser view.
        get_params = "models=True"
        digest = digest_for_source('local', get_params)
        response = self.client.get(
            f"https://www.example.com/wagtail-transfer/api/chooser/models/?{get_params}&digest={digest}"
        )
        self.assertEqual(response.status_code, 200)

        content = json.loads(response.content.decode("utf-8"))
        self.assertEqual(content['meta']['total_count'], 1)

        snippet = content['items'][0]
        self.assertEqual(snippet['model_label'], 'tests.category')
        self.assertEqual(snippet['name'], 'Category')
コード例 #6
0
    def test_parental_many_to_many(self):
        page = PageWithParentalManyToMany(title="This page has lots of ads!")
        advert_2 = Advert.objects.get(id=2)
        advert_3 = Advert.objects.get(id=3)
        page.ads = [advert_2, advert_3]

        parent_page = Page.objects.get(url_path='/home/existing-child-page/')
        parent_page.add_child(instance=page)

        digest = digest_for_source('local', str(page.id))
        response = self.client.get('/wagtail-transfer/api/pages/%d/?digest=%s' % (page.id, digest))

        data = json.loads(response.content)

        self.assertIn(['tests.advert', 2, "adadadad-2222-2222-2222-222222222222"], data['mappings'])
        self.assertIn(['tests.advert', 3, "adadadad-3333-3333-3333-333333333333"], data['mappings'])
        self.assertEqual({2, 3}, set(data['objects'][0]['fields']['ads']))
コード例 #7
0
    def test_streamfield_with_rich_text(self):
        # Check that page references within a RichTextBlock in StreamField are found correctly

        page = PageWithStreamField(title="My streamfield rich text block has a link",
                                   body=json.dumps([{'type': 'rich_text',
                                          'value': '<p>I link to a <a id="1" linktype="page">page</a>.</p>',
                                          'id': '7d4ee3d4-9213-4319-b984-45be4ded8853'}]))

        parent_page = Page.objects.get(url_path='/home/existing-child-page/')
        parent_page.add_child(instance=page)

        digest = digest_for_source('local', str(page.id))
        response = self.client.get('/wagtail-transfer/api/pages/%d/?digest=%s' % (page.id, digest))

        data = json.loads(response.content)

        self.assertIn(['wagtailcore.page', 1, '11111111-1111-1111-1111-111111111111'], data['mappings'])
コード例 #8
0
    def test(self, get):
        get.return_value.status_code = 200
        get.return_value.content = b'test content'

        response = self.client.get(
            '/admin/wagtail-transfer/api/chooser-proxy/staging/foo?bar=baz',
            HTTP_ACCEPT='application/json')

        digest = digest_for_source('staging', 'bar=baz')

        get.assert_called_once_with(
            f'https://www.example.com/wagtail-transfer/api/chooser/pages/foo?bar=baz&digest={digest}',
            headers={'Accept': 'application/json'},
            timeout=5)

        self.assertEqual(response.status_code, 200)
        self.assertEqual(response.content, b'test content')
コード例 #9
0
    def test_streamfield_with_dead_page_link(self):
        page = PageWithStreamField(
            title="I have a streamfield",
            body=json.dumps([
                {'type': 'link_block', 'value': {'page': 999, 'text': 'Test'}, 'id': 'fc3b0d3d-d316-4271-9e31-84919558188a'},
            ])
        )
        parent_page = Page.objects.get(url_path='/home/existing-child-page/')
        parent_page.add_child(instance=page)

        digest = digest_for_source('local', str(page.id))
        response = self.client.get('/wagtail-transfer/api/pages/%d/?digest=%s' % (page.id, digest))

        data = json.loads(response.content)
        self.assertTrue(any(
            model == 'wagtailcore.page' and id == 999
            for model, id, uid in data['mappings']
        ))
コード例 #10
0
    def test_streamfield_with_page_links_in_new_listblock_format(self):
        if not has_new_listblock_format():
            self.skipTest(
                "This version of Wagtail does not use the UUID ListBlock format"
            )
        page = PageWithStreamField(
            title="I have a streamfield",
            body=json.dumps([
                {
                    'type':
                    'list_of_captioned_pages',
                    'value': [{
                        'type': 'item',
                        'value': {
                            'page': 5,
                            'text': 'a caption'
                        },
                        'id': '8c0d7de7-4f77-4477-be67-7d990d0bfb82'
                    }],
                    'id':
                    '21ffe52a-c0fc-4ecc-92f1-17b356c9cc94'
                },
            ]))
        parent_page = Page.objects.get(url_path='/home/existing-child-page/')
        parent_page.add_child(instance=page)

        digest = digest_for_source('local', str(page.id))
        response = self.client.get(
            '/wagtail-transfer/api/pages/%d/?digest=%s' % (page.id, digest))

        data = json.loads(response.content)

        # test PageChooserBlock in ListBlock
        self.assertIn(
            ['wagtailcore.page', 5, "00017017-5555-5555-5555-555555555555"],
            data['mappings'])
コード例 #11
0
 def get(self, page_id, recursive=True):
     digest = digest_for_source('local', str(page_id))
     return self.client.get('/wagtail-transfer/api/pages/%d/?digest=%s&recursive=%s' % (page_id, digest, str(recursive).lower()))
コード例 #12
0
 def get_parameters(self, initial_get='models=true'):
     digest = digest_for_source('local', initial_get)
     return f'?{initial_get}&digest={digest}'
コード例 #13
0
 def get(self, page_id):
     digest = digest_for_source('local', str(page_id))
     return self.client.get('/wagtail-transfer/api/pages/%d/?digest=%s' % (page_id, digest))