コード例 #1
0
 def setUpPartiallyTranslatedContent(self):
     wftool = self.setUpPAMFolders()
     folder = makeContent(self.portal.en, 'Folder', id='folder')
     folder.setLanguage('en')
     wftool.doActionFor(folder, 'publish')
     document = makeContent(folder, 'Document', id='document')
     document.setLanguage('en')
     wftool.doActionFor(document, 'publish')
     folder_ca = makeTranslation(folder, 'ca')
     folder_ca.edit(title="Foo", language='ca')
     wftool.doActionFor(folder_ca, 'publish')
     transaction.commit()
     return wftool
コード例 #2
0
    def test_locator(self):
        self.bf_ca = makeContent(self.portal.ca, 'dxfolder', id='bf_ca')
        self.bf2_ca = makeContent(self.portal.ca.bf_ca, 'dxfolder', id='bf2_ca')

        from plone.app.multilingual.interfaces import ITranslationLocator
        locator = ITranslationLocator(self.bf2_ca)
        self.failUnless(locator('es'), self.portal.es)

        ITranslationManager(self.bf_ca).add_translation('es')
        self.bf_es = ITranslationManager(self.bf_ca).get_translation('es')

        child_locator = ITranslationLocator(self.bf2_ca)
        self.failUnless(child_locator('es'), self.bf_es)
コード例 #3
0
    def test_babel_edit_buttons(self):
        self.browser.addHeader('Authorization', 'Basic %s:%s' % (TEST_USER_NAME, TEST_USER_PASSWORD))
        setRoles(self.portal, TEST_USER_ID, ['Manager'])
        login(self.portal, TEST_USER_NAME)

        doc1 = makeContent(self.portal, 'Document', id='doc1')
        transaction.commit()

        self.browser.open(doc1.absolute_url() + '/@@create_translation')
        self.browser.getControl(name="form.widgets.language:list").value = ['ca']
        self.browser.getControl(name="form.buttons.create").click()

        # Now in the babel_edit form
        self.browser.getControl(name="title").value = "Doc ca"

        self.assertTrue('name="button-English"' in self.browser.contents)

        self.assertTrue('name="button-Catala"' not in self.browser.contents)

        self.browser.getControl(name="form.button.save").click()

        self.browser.open(doc1.absolute_url() + '/@@create_translation')
        self.browser.getControl(name="form.widgets.language:list").value = ['es']
        self.browser.getControl(name="form.buttons.create").click()

        # Now in the babel_edit form
        self.browser.getControl(name="title").value = "Doc es"

        self.assertTrue('name="button-English"' in self.browser.contents)
        self.assertTrue('name="button-Spanish"' not in self.browser.contents)
        self.assertTrue('name="button-Catalan"' in self.browser.contents)

        self.browser.getControl(name="form.button.save").click()
コード例 #4
0
def setUp():
    portal = getSite()
    applyProfile(portal, 'plone.multilingualbehavior:default')

    language_tool = getToolByName(portal, 'portal_languages')
    language_tool.addSupportedLanguage('ca')
    language_tool.addSupportedLanguage('es')

    workflowTool = getToolByName(portal, "portal_workflow")
    workflowTool.setDefaultChain('simple_publication_workflow')

    setupTool = SetupMultilingualSite()
    setupTool.setupSite(portal)

    transaction.commit()

    atdoc = makeContent(portal['en'], 'Document', id='atdoc', title='EN doc')
    atdoc.setLanguage('en')
    atdoc_ca = makeTranslation(atdoc, 'ca')
    atdoc_ca.edit(title="CA doc", language='ca')

    dxdoc = createContentInContainer(portal['en'], "dxdoc", id="dxdoc", title='EN doc')
    ILanguage(dxdoc).set_language('en')
    dxdoc_ca = makeTranslation(dxdoc, 'ca')
    dxdoc_ca.title = "CA doc"
    ILanguage(dxdoc_ca).set_language('ca')

    transaction.commit()
コード例 #5
0
    def test_create_destroy_link_translations(self):
        ITranslationManager(self.a_ca).add_translation('es')
        self.a_es = ITranslationManager(self.a_ca).get_translation('es')

        self.b_es = makeContent(self.portal.es, 'dxdoc', id='b_es')

        ITranslationManager(self.b_es).add_translation('ca')
        self.b_ca = ITranslationManager(self.b_es).get_translation('ca')

        from OFS.event import ObjectWillBeRemovedEvent
        from zope.event import notify

        notify(ObjectWillBeRemovedEvent(self.a_es))
        self.portal.es.manage_delObjects(self.a_es.id)

        notify(ObjectWillBeRemovedEvent(self.b_ca))
        self.portal.ca.manage_delObjects(self.b_ca.id)

        id_b_es = ITranslationManager(self.b_es).query_canonical()
        id_a_ca = ITranslationManager(self.a_ca).query_canonical()
        self.assertFalse(id_b_es == id_a_ca)
        self.assertTrue(isinstance(id_b_es, str))
        self.assertTrue(isinstance(id_a_ca, str))

        ITranslationManager(self.a_ca).register_translation('es', self.b_es)

        id_b_es = ITranslationManager(self.b_es).query_canonical()
        id_a_ca = ITranslationManager(self.a_ca).query_canonical()
        self.assertTrue(id_b_es == id_a_ca)
コード例 #6
0
    def test_uuid_shared(self):
        self.root_a_ca = makeContent(self.portal, "dxdoc", id="a_ca")

        from plone.uuid.interfaces import IUUID

        rootuuid = IUUID(self.root_a_ca)
        shareduuid = IUUID(self.portal.ca.a_ca)
        self.assertTrue(rootuuid + "-ca" == shareduuid)
コード例 #7
0
 def setUp(self):
     self.portal = self.layer['portal']
     self.request = self.layer['request']
     alsoProvides(self.request, IPloneAppMultilingualInstalled)
     language_tool = getToolByName(self.portal, 'portal_languages')
     language_tool.addSupportedLanguage('ca')
     language_tool.addSupportedLanguage('es')
     self.a_ca = makeContent(self.portal, 'dxdoc', id='a_ca')
     ILanguage(self.a_ca).set_language('ca')
コード例 #8
0
    def test_alternates_AT(self):
        atdoc = makeContent(
            self.portal['en'], 'Document', id='atdoc', title='EN doc')
        atdoc.setLanguage('en')
        atdoc_ca = makeTranslation(atdoc, 'ca')
        atdoc_ca.edit(title="CA doc", language='ca')

        transaction.savepoint()

        self._validate_alternates(atdoc)
コード例 #9
0
    def test_create_relink_translation(self):
        """ We check the update function here """

        # ITranslationManager(self.a_ca).add_translation('es')
        # self.a_es = ITranslationManager(self.a_ca).get_translation('es')

        self.b_es = makeContent(self.portal.es, 'dxfolder', id='b_es')
        ITranslationManager(self.b_es).add_translation('ca')
        self.b_ca = ITranslationManager(self.b_es).get_translation('ca')

        ITranslationManager(self.a_ca).register_translation('es', self.b_es)

        self.assertFalse(ITranslationManager(self.b_ca).has_translation('es'))
        self.failUnless(ITranslationManager(self.b_es).get_translation('ca'), self.a_ca)
コード例 #10
0
    def test_shared_to_lrf(self):
        self.root_a_ca = makeContent(self.portal, "dxdoc", id="a_ca")

        from plone.uuid.interfaces import IUUID

        old_uuid = IUUID(self.root_a_ca)
        # The ghost is ghost
        self.assertTrue(is_shared(self.portal.ca.a_ca))

        # Check is in the catalog
        brains = self.portal.portal_catalog.searchResults(UID=old_uuid)
        self.assertTrue(len(brains) == 1)
        self.assertTrue(brains[0].getPath() == "/plone/a_ca")

        brains = self.portal.portal_catalog.searchResults(UID=old_uuid + "-ca")
        self.assertTrue(len(brains) == 1)
        self.assertTrue(brains[0].getPath() == "/plone/ca/a_ca")

        brains = self.portal.portal_catalog.searchResults(UID=old_uuid + "-es")
        self.assertTrue(len(brains) == 1)
        self.assertTrue(brains[0].getPath() == "/plone/es/a_ca")

        new_object = multilingualMoveObject(self.portal.ca.a_ca, "ca")
        # check that the old and the new uuid are the same
        new_uuid = IUUID(self.portal.ca.copy_of_a_ca)
        self.assertTrue(old_uuid, new_uuid)
        self.assertFalse(is_shared(new_object))

        # check portal_catalog is updated

        brains = self.portal.portal_catalog.searchResults(UID=old_uuid)
        self.assertTrue(len(brains) == 1)
        self.assertTrue(brains[0].getPath() == "/plone/ca/copy_of_a_ca")

        brains = self.portal.portal_catalog.searchResults(UID=old_uuid + "-ca")
        self.assertTrue(len(brains) == 0)

        brains = self.portal.portal_catalog.searchResults(UID=old_uuid + "-es")
        self.assertTrue(len(brains) == 0)

        # Check which translations it have
        self.failUnless(ITranslationManager(new_object).get_translations(), {"ca": new_object})
        ITranslationManager(new_object).add_translation("es")
        self.failUnless(
            ITranslationManager(new_object).get_translations(), {"ca": new_object, "es": self.portal.es.copy_of_a_ca}
        )

        self.assertFalse(is_shared(self.portal.es.copy_of_a_ca))
コード例 #11
0
    def setUp(self):
        self.portal = self.layer['portal']
        self.request = self.layer['request']
        alsoProvides(self.request, IPloneAppMultilingualInstalled)
        language_tool = getToolByName(self.portal, 'portal_languages')
        language_tool.addSupportedLanguage('ca')
        language_tool.addSupportedLanguage('es')

        workflowTool = getToolByName(self.portal, "portal_workflow")
        workflowTool.setDefaultChain('simple_publication_workflow')

        setupTool = SetupMultilingualSite()
        setupTool.folder_type = 'dxfolder'
        setupTool.setupSite(self.portal)

        self.a_ca = makeContent(self.portal.ca, 'dxdoc', id='a_ca')
コード例 #12
0
    def test_shared_content(self):
        self.root_a_ca = makeContent(self.portal, "dxdoc", id="a_ca")

        # Check shared is there
        self.assertTrue(self.root_a_ca == self.portal.ca.a_ca)
        self.assertTrue(self.root_a_ca == self.portal.es.a_ca)

        # Check remove root from lrf and catalog update

        from OFS.event import ObjectWillBeRemovedEvent
        from zope.event import notify

        notify(ObjectWillBeRemovedEvent(self.portal.a_ca))
        self.portal.manage_delObjects(self.root_a_ca.id)

        self.assertTrue("a_ca" not in self.portal.ca)
コード例 #13
0
    def test_universal_link_view(self):
        self.browser.addHeader('Authorization', 'Basic %s:%s' % (TEST_USER_NAME, TEST_USER_PASSWORD))
        self.browser.addHeader('Accept-Language', 'ca')
        setRoles(self.portal, TEST_USER_ID, ['Manager'])
        login(self.portal, TEST_USER_NAME)

        doc1 = makeContent(self.portal, 'Document', id='doc1')
        doc1.setLanguage('en')
        doc1_ca = makeTranslation(doc1, 'ca')
        doc1_ca.edit(title="Foo", language='ca')
        doc1_es = makeTranslation(doc1, 'es')
        doc1_es.edit(title="Foo", language='es')
        transaction.commit()

        self.browser.open(doc1.absolute_url())
        self.browser.getLink("Universal Link").click()
        self.assertEqual(self.browser.url, 'http://nohost/plone/doc1-ca')
コード例 #14
0
    def test_universal_link_view(self):
        self.browser.addHeader(
            'Authorization',
            'Basic %s:%s' % (TEST_USER_NAME, TEST_USER_PASSWORD))
        self.browser.addHeader('Accept-Language', 'ca')
        setRoles(self.portal, TEST_USER_ID, ['Manager'])
        login(self.portal, TEST_USER_NAME)

        doc1 = makeContent(self.portal, 'Document', id='doc1')
        doc1.setLanguage('en')
        doc1_ca = makeTranslation(doc1, 'ca')
        doc1_ca.edit(title="Foo", language='ca')
        doc1_es = makeTranslation(doc1, 'es')
        doc1_es.edit(title="Foo", language='es')
        transaction.commit()

        self.browser.open(doc1.absolute_url())
        self.browser.getLink("Universal Link").click()
        self.assertEqual(self.browser.url, 'http://nohost/plone/doc1-ca')
コード例 #15
0
    def test_shared_catalog_content(self):
        self.root_a_ca = makeContent(self.portal, "dxdoc", id="a_ca")

        elements = self.portal.portal_catalog.searchResults(id="a_ca")

        # Check catalog on lrf is indexed
        self.assertTrue(len(elements) == 4)

        # Check remove root from lrf and catalog update

        from OFS.event import ObjectWillBeRemovedEvent
        from zope.event import notify

        notify(ObjectWillBeRemovedEvent(self.portal.a_ca))
        self.portal.manage_delObjects(self.root_a_ca.id)

        elements = self.portal.portal_catalog.searchResults(id="a_ca")

        # Check catalog on lrf is indexed
        self.assertTrue(len(elements) == 0)
コード例 #16
0
def setUp():
    portal = getSite()
    applyProfile(portal, 'plone.multilingualbehavior:default')

    language_tool = getToolByName(portal, 'portal_languages')
    language_tool.addSupportedLanguage('ca')
    language_tool.addSupportedLanguage('es')

    atdoc = makeContent(portal, 'Document', id='atdoc', title='EN doc')
    atdoc.setLanguage('en')
    atdoc_ca = makeTranslation(atdoc, 'ca')
    atdoc_ca.edit(title="CA doc", language='ca')

    dxdoc = createContentInContainer(portal, "dxdoc", id="dxdoc", title='EN doc')
    ILanguage(dxdoc).set_language('en')
    dxdoc_ca = makeTranslation(dxdoc, 'ca')
    dxdoc_ca.title = "CA doc"
    ILanguage(dxdoc_ca).set_language('ca')

    transaction.commit()
コード例 #17
0
    def test_languages_untranslated_by_closest(self):
        self.registry = getUtility(IRegistry)
        self.settings = self.registry.forInterface(IMultiLanguagePolicies)
        self.settings.selector_lookup_translations_policy = 'closest'
        self.setUpPAMFolders()

        document = makeContent(self.portal.ca, 'Document', id='untranslated')
        document.setLanguage('ca')
        wftool = getToolByName(self.portal, "portal_workflow")
        wftool.doActionFor(document, 'publish')
        transaction.commit()
        view = selector_view(document, self.layer['request'])
        view.lang = 'es'
        view.tg = ITG(document)
        url = view.getClosestDestination()
        self.assertEqual(url, self.portal.es.absolute_url())

        view.lang = 'it'
        url = view.getClosestDestination()
        self.assertEqual(url, self.portal.absolute_url())
コード例 #18
0
    def test_languages_full_translated_by_closest(self):
        self.registry = getUtility(IRegistry)
        self.settings = self.registry.forInterface(IMultiLanguagePolicies)
        self.settings.selector_lookup_translations_policy = 'closest'

        doc1 = makeContent(self.portal, 'Document', id='doc1')
        doc1.setLanguage('en')
        doc1_ca = makeTranslation(doc1, 'ca')
        doc1_ca.edit(title="Foo", language='ca')
        doc1_es = makeTranslation(doc1, 'es')
        doc1_es.edit(title="Foo", language='es')

        self.selector = LanguageSelectorViewlet(doc1, self.request, None, None)

        self.selector.update()

        self.assertEqual(self.selector.languages(), [{
            'code': u'en',
            u'name': u'English',
            'url': 'http://nohost/plone/doc1?set_language=en',
            'selected': True,
            u'flag': u'/++resource++country-flags/gb.gif',
            'translated': True,
            u'native': u'English'
        }, {
            'code': u'ca',
            u'name': u'Catalan',
            'url': 'http://nohost/plone/doc1-ca?set_language=ca',
            'selected': False,
            u'flag': u'/++resource++language-flags/ca.gif',
            'translated': True,
            u'native': u'Catal\xe0'
        }, {
            'code': u'es',
            u'name': u'Spanish',
            'url': 'http://nohost/plone/doc1-es?set_language=es',
            'selected': False,
            u'flag': u'/++resource++country-flags/es.gif',
            'translated': True,
            u'native': u'Espa\xf1ol'
        }])
コード例 #19
0
    def setUp(self):
        with ploneSite() as portal:
            language_tool = getToolByName(portal, 'portal_languages')
            language_tool.addSupportedLanguage('ca')
            language_tool.addSupportedLanguage('es')

            setupTool = SetupMultilingualSite()
            setupTool.setupSite(portal)

            atdoc = makeContent(
                portal['en'], 'Document', id='atdoc', title='EN doc')
            atdoc.setLanguage('en')
            atdoc_ca = makeTranslation(atdoc, 'ca')
            atdoc_ca.edit(title="CA doc", language='ca')

            dxdoc = createContentInContainer(
                portal['en'], "dxdoc", id="dxdoc", title='EN doc')
            ILanguage(dxdoc).set_language('en')
            dxdoc_ca = makeTranslation(dxdoc, 'ca')
            dxdoc_ca.title = "CA doc"
            ILanguage(dxdoc_ca).set_language('ca')
コード例 #20
0
ファイル: test_selector.py プロジェクト: adam139/devplone422
    def test_languages_full_translated_by_closest(self):
        self.registry = getUtility(IRegistry)
        self.settings = self.registry.forInterface(IMultiLanguagePolicies)
        self.settings.selector_lookup_translations_policy = 'closest'

        doc1 = makeContent(self.portal, 'Document', id='doc1')
        doc1.setLanguage('en')
        doc1_ca = makeTranslation(doc1, 'ca')
        doc1_ca.edit(title="Foo", language='ca')
        doc1_es = makeTranslation(doc1, 'es')
        doc1_es.edit(title="Foo", language='es')

        self.selector = LanguageSelectorViewlet(doc1,
                            self.request, None, None)

        self.selector.update()

        self.assertEqual(self.selector.languages(), [
            {'code': u'en',
             u'name': u'English',
             'url': 'http://nohost/plone/doc1?set_language=en',
             'selected': True,
             u'flag': u'/++resource++country-flags/gb.gif',
             'translated': True,
             u'native': u'English'},
             {'code': u'ca',
              u'name': u'Catalan',
              'url': 'http://nohost/plone/doc1-ca?set_language=ca',
              'selected': False,
              u'flag': u'/++resource++language-flags/ca.gif',
              'translated': True,
              u'native': u'Catal\xe0'},
              {'code': u'es',
              u'name': u'Spanish',
              'url': 'http://nohost/plone/doc1-es?set_language=es',
              'selected': False,
              u'flag': u'/++resource++country-flags/es.gif',
              'translated': True,
              u'native': u'Espa\xf1ol'}
        ])
コード例 #21
0
    def test_babel_edit_buttons(self):
        self.browser.addHeader(
            'Authorization',
            'Basic %s:%s' % (TEST_USER_NAME, TEST_USER_PASSWORD))
        setRoles(self.portal, TEST_USER_ID, ['Manager'])
        login(self.portal, TEST_USER_NAME)

        doc1 = makeContent(self.portal, 'Document', id='doc1')
        transaction.commit()

        self.browser.open(doc1.absolute_url() + '/@@create_translation')
        self.browser.getControl(name="form.widgets.language:list").value = [
            'ca'
        ]
        self.browser.getControl(name="form.buttons.create").click()

        # Now in the babel_edit form
        self.browser.getControl(name="title").value = "Doc ca"

        self.assertTrue('name="button-English"' in self.browser.contents)

        self.assertTrue('name="button-Catala"' not in self.browser.contents)

        self.browser.getControl(name="form.button.save").click()

        self.browser.open(doc1.absolute_url() + '/@@create_translation')
        self.browser.getControl(name="form.widgets.language:list").value = [
            'es'
        ]
        self.browser.getControl(name="form.buttons.create").click()

        # Now in the babel_edit form
        self.browser.getControl(name="title").value = "Doc es"

        self.assertTrue('name="button-English"' in self.browser.contents)
        self.assertTrue('name="button-Spanish"' not in self.browser.contents)
        self.assertTrue('name="button-Catalan"' in self.browser.contents)

        self.browser.getControl(name="form.button.save").click()
コード例 #22
0
    def assertFullyTranslatedPages(self):
        doc1 = makeContent(self.portal, 'Document', id='doc1')
        doc1.setLanguage('en')
        doc1_tg = ITG(doc1)
        doc1_ca = makeTranslation(doc1, 'ca')
        doc1_ca.edit(title="Foo", language='ca')
        doc1_es = makeTranslation(doc1, 'es')
        doc1_es.edit(title="Foo", language='es')

        self.selector = LanguageSelectorViewlet(doc1,
                            self.request, None, None)

        self.selector.update()
        selector_languages = self.selector.languages()
        self.assertEqual(selector_languages, [
            {
                'code': u'en',
                u'name': u'English',
                'url': SELECTOR_VIEW_TEMPLATE % {
                    'url': self.portal_url,
                    'tg': doc1_tg,
                    'lang': 'en',
                    'query': '?set_language=en'
                },
                'selected': True,
                u'flag': u'/++resource++country-flags/gb.gif',
                'translated': True,
                u'native': u'English'
            },
            {
                'code': u'ca',
                u'name': u'Catalan',
                'url': SELECTOR_VIEW_TEMPLATE % {
                    'url': self.portal_url,
                    'tg': doc1_tg,
                    'lang': 'ca',
                    'query': '?set_language=ca'
                },
                'selected': False,
                u'flag': u'/++resource++language-flags/ca.gif',
                'translated': True,
                u'native': u'Catal\xe0'
            },
            {
                'code': u'es',
                u'name': u'Spanish',
                'url': SELECTOR_VIEW_TEMPLATE % {
                    'url': self.portal_url,
                    'tg': doc1_tg,
                    'lang': 'es',
                    'query': '?set_language=es'
                },
                'selected': False,
                u'flag': u'/++resource++country-flags/es.gif',
                'translated': True,
                u'native': u'Espa\xf1ol'
            }
        ])

        self.browser.open(selector_languages[0]['url'])
        self.assertEqual(
            self.browser.url,
            doc1.absolute_url() + '?set_language=en'
        )
        self.assertRegexpMatches(self.browser.contents, r"You\s*are here")
        self.browser.open(selector_languages[1]['url'])
        self.assertEqual(
            self.browser.url,
            doc1_ca.absolute_url() + '?set_language=ca'
        )
        self.assertIn(
            u'lang="ca"'.encode("utf-8"),
            self.browser.contents
        )
        self.browser.open(selector_languages[2]['url'])
        self.assertEqual(
            self.browser.url,
            doc1_es.absolute_url() + '?set_language=es'
        )
        self.assertIn(
            u'lang="es"'.encode("utf-8"),
            self.browser.contents
        )
コード例 #23
0
 def setUp(self):
     self.portal = self.layer['portal']
     self.folder = makeContent(self.portal, 'Folder', id='folder')
     self.document = makeContent(self.folder, 'Document', id='document')
     self.request = self.layer['request']
コード例 #24
0
 def test_register_translation(self):
     self.a_es = makeContent(self.portal, 'dxdoc', id='a_es')
     ILanguage(self.a_es).set_language('es')
     ITranslationManager(self.a_ca).register_translation('es', self.a_es)
     self.failUnless(ITranslationManager(self.a_ca).get_translations(), {'ca': self.a_ca, 'es': self.a_es})