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
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)
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()
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()
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)
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)
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')
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)
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)
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))
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')
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)
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')
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')
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)
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()
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())
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' }])
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')
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'} ])
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()
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 )
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']
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})