def createLinguaPloneStructure(self): self.folder = makeContent(self.portal, 'Folder', id='folder') self.folder.setLanguage('en') self.folder_ca = makeTranslation(self.folder, 'ca') self.folder_es = makeTranslation(self.folder, 'es') self.doc1 = makeContent(self.portal, 'Document', id='doc1') self.doc1.setLanguage('en') self.doc1_ca = makeTranslation(self.doc1, 'ca') self.doc1_ca.edit(title="Foo-ca", language='ca') self.doc1_es = makeTranslation(self.doc1, 'es') self.doc1_es.edit(title="Foo-es", language='es') self.doc2 = makeContent(self.folder, 'Document', id='doc2') self.doc2.setLanguage('en') self.doc2_ca = makeTranslation(self.doc2, 'ca') self.doc2_ca.edit(title="Bar-ca", language='ca') self.doc2_es = makeTranslation(self.doc2, 'es') self.doc2_es.edit(title="Bar-es", language='es') self.doc3 = makeContent(self.folder_ca, 'Document', id='doc3') self.doc3.setLanguage('ca') self.doc3_es = makeTranslation(self.doc3, 'es') self.doc3_es.edit(title="Woot", language="es") self.doc4 = makeContent(self.folder_es, 'Document', id='doc4') self.doc4.setLanguage('es') self.doc4_en = makeTranslation(self.doc4, 'en') self.doc4_en.edit(title="Woot woot", language="en")
def testLangIndependentReferenceIndexing(self): catalog = getToolByName(self.portal, 'portal_catalog') catalog.addIndex('getRawReference', 'FieldIndex') catalog.addColumn('getRawReference') catalog.addIndex('getRawReferenceDependent', 'FieldIndex') catalog.addColumn('getRawReferenceDependent') english = makeContent(self.folder, 'SimpleType', 'doc') english.setLanguage('en') german = makeTranslation(english, 'de') target = makeContent(self.folder, 'SimpleType', 'target') target.setLanguage('en') target_german = makeTranslation(target, 'de') # Test language independent reference fields english.processForm(values=dict( reference=target.UID(), referenceDependent=target.UID())) self.assertEqual(english.getReference().UID(), target.UID()) self.assertEqual(german.getReference().UID(), target_german.UID()) brains = catalog(dict(getRawReferenceDependent=target.UID())) self.assertEqual(brains[0].getRawReferenceDependent, target.UID()) brains = catalog(dict(getRawReferenceDependent=target.UID())) self.assertEqual(brains[0].getRawReferenceDependent, target.UID()) brains = catalog(dict(UID=english.UID())) self.assertEqual(brains[0].getRawReference, target.UID()) brains = catalog(dict(UID=german.UID())) self.assertEqual(brains[0].getRawReference, target_german.UID())
def testDefaultLanguageNeutralFolder(self): neutral_folder = makeContent(self.folder, 'SimpleFolder', 'neutral') neutral_folder.setLanguage('') neutral_doc = makeContent(neutral_folder, 'SimpleType', 'doc-neutral') # Adding content to a neutral folder defaults to it being neutral, # even if the site is not neutral by default self.assertEquals(neutral_doc.defaultLanguage(), '')
def testDefaultLanguageNonNeutralSite(self): self.loginAsPortalOwner() ltool = getToolByName(self.portal, 'portal_languages') ltool.start_neutral = False neutral_folder = makeContent(self.folder, 'SimpleFolder', 'neutral') neutral_folder.setLanguage('') neutral_doc = makeContent(neutral_folder, 'SimpleType', 'doc-neutral') self.assertEquals(neutral_doc.defaultLanguage(), '')
def testDefaultLanguageNoLanguageTool(self): neutral_folder = makeContent(self.folder, 'SimpleFolder', 'neutral') neutral_folder.setLanguage('') neutral_doc = makeContent(neutral_folder, 'SimpleType', 'doc-neutral') self.loginAsPortalOwner() del self.portal['portal_languages'] from Products.Archetypes.config import LANGUAGE_DEFAULT self.assertEquals(neutral_doc.defaultLanguage(), LANGUAGE_DEFAULT)
def afterSetUp(self): self.addLanguage('de') self.setLanguage('en') self.english = makeContent(self.folder, 'SimpleType', 'doc') self.english.setLanguage('en') self.bulgarian = makeContent(self.folder, 'SimpleType', 'doc1') self.bulgarian.setLanguage('bg') self.russian = makeContent(self.folder, 'SimpleType', 'doc2') self.russian.setLanguage('ru')
def afterSetUp(self): self.addLanguage('pt') self.setLanguage('en') self.folder_en = makeContent(self.folder, 'DynamicFolder', 'folder') self.folder_en.setLanguage('en') self.english = makeContent(self.folder_en, 'SimpleType', 'doc') self.english.setLanguage('en') self.folder_en.setDefaultPage(self.english.getId()) self.portuguese = makeTranslation(self.english, 'pt') transaction.savepoint(optimistic=True) self.portuguese.processForm(values={'title': 'Foo'}) self.folder_pt = self.folder_en.getTranslation('pt')
def afterSetUp(self): directlyProvides(self.portal.REQUEST, ILinguaPloneProductLayer) self.addLanguage('pt') self.setLanguage('en') self.folder_en = makeContent(self.folder, 'DynamicFolder', 'folder') self.folder_en.setLanguage('en') self.english = makeContent(self.folder_en, 'SimpleType', 'doc') self.english.setLanguage('en') self.folder_en.setDefaultPage(self.english.getId()) self.portuguese = makeTranslation(self.english, 'pt') transaction.savepoint(optimistic=True) self.portuguese.processForm(values={'id': 'foo', 'title': 'Foo'}) self.folder_pt = self.folder_en.getTranslation('pt')
def afterSetUp(self): self.addLanguage('de') self.addLanguage('fr') self.setLanguage('en') self.english = makeContent(self.folder, 'SimpleType', 'doc') self.english.setLanguage('en') self.alsoenglish = makeContent(self.folder, 'SimpleType', 'doctwo') self.alsoenglish.setLanguage('en') self.german = makeTranslation(self.english, 'de') self.french = makeContent(self.folder, 'SimpleType', 'frenchdoc') self.french.setLanguage('fr') self.folder_en = makeContent(self.folder, 'SimpleFolder', 'folder') self.folder_en.setLanguage('en')
def afterSetUp(self): LinguaPloneTestCase.LinguaPloneTestCase.afterSetUp(self) self.addLanguage('de') self.setLanguage('en') self.english = makeContent(self.folder, 'SimpleType', 'index_html') self.english.setLanguage('en') self.german = makeTranslation(self.english, 'de')
def test_textfield_on_document(self): from Products.LinguaPlone.utils import LanguageIndependentFields english = makeContent(self.folder, 'Document', 'doc') english.setLanguage('en') english.setText('') key = 'Archetypes.storage.AnnotationStorage-text' baseunit = english.__annotations__[key] self.assertEqual(baseunit.getContentType(), 'text/plain') # use the LanguageIndependentFields adapter to copy the text field def getFields(self, schema=None): if schema is None: schema = self.context.Schema() return schema.filterFields(__name__='text') orig = LanguageIndependentFields.getFields try: LanguageIndependentFields.getFields = getFields german = makeTranslation(english, 'de') self.assertEqual(german.getText(), '') de_baseunit = german.__annotations__[key] self.assertEqual(de_baseunit.getContentType(), 'text/plain') # update field english.setText('<p>Hello</p>') LanguageIndependentFields(english).copyFields(german) self.assertEqual(baseunit.getContentType(), 'text/html') self.assertEqual(german.getText(), '<p>Hello</p>') self.assertEqual(de_baseunit.getContentType(), 'text/html') finally: LanguageIndependentFields.getFields = orig
def afterSetUp(self): self.addLanguage('de') self.setLanguage('en') # Speed things up self.portal._delObject('portal_catalog') self.english = makeContent(self.folder, 'SimpleType', 'doc') self.english.setLanguage('en')
def testProcessFormIdFromTitleWithRequestSeparateFolder(self): self.en_folder = makeContent(self.folder, 'Folder', 'inner_folder') self.inner_english = makeContent(self.en_folder, 'SimpleType', 'doc') self.loginAsPortalOwner() self.addLanguage('fr') fr_folder = makeTranslation(self.en_folder, 'fr') french = makeTranslation(self.inner_english, 'fr') self.assertTrue(french.absolute_url().startswith( fr_folder.absolute_url())) from zope.publisher.browser import TestRequest request = TestRequest(form={ 'id': french.getId(), 'title': 'Biere'}) french.processForm(REQUEST=request) self.assertNotEqual(french.getId(), 'doc-fr') self.assertEqual(french.getId(), 'biere')
def afterSetUp(self): self.addLanguage('de') self.addLanguage('fr') self.setLanguage('en') self.english = makeContent(self.folder, 'SimpleType', 'doc') self.english.setLanguage('en') self.german = makeTranslation(self.english, 'de')
def testRenderSelectorWithNavigationRootForAnonymous(self): self.loginAsPortalOwner() en_root = makeContent(self.portal, 'Folder', 'en') en_root.setLanguage('en') directlyProvides(en_root, INavigationRoot) de_root = makeTranslation(en_root, 'de') de_root.setLanguage('de') directlyProvides(de_root, INavigationRoot) no_root = makeTranslation(en_root, 'no') no_root.setLanguage('no') directlyProvides(no_root, INavigationRoot) self.setRoles('Reviewer') pw = self.portal.portal_workflow pw.doActionFor(en_root, 'publish') pw.doActionFor(de_root, 'publish') self.logout() request = self.app.REQUEST selector = TranslatableLanguageSelector(en_root, request, None, None) selector.update() output = selector.render() en_path = en_root.absolute_url() en_link = '<a href="%s?set_language=en"' % en_path self.assert_(en_link in output) de_path = de_root.absolute_url() de_link = '<a href="%s?set_language=de"' % de_path self.assert_(de_link in output) self.assert_('set_language=no' not in output)
def afterSetUp(self): directlyProvides(self.portal.REQUEST, ILinguaPloneProductLayer) self.addLanguage('de') self.setLanguage('en') self.english = makeContent(self.folder, 'SimpleType', 'news') self.english.setLanguage('en') self.german = makeTranslation(self.english, 'de')
def testDeleteCanonicalWithTranslationsBTreeFolder(self): # Must delete translations first english = makeContent(self.folder, 'BTreeFolder', 'foo') english.setLanguage('en') makeTranslation(english, 'de') self.assertRaises(BeforeDeleteException, self.folder._delObject, 'foo')
def afterSetUp(self): self.addLanguage('de') self.addLanguage('fr') self.addLanguage('es') self.setLanguage('en') self.english = makeContent(self.folder, 'SimpleType', 'doc') self.english.setLanguage('en')
def afterSetUp(self): self.login() self.setRoles(["Manager"]) self.addLanguage('de') self.setLanguage('en') self.weblog_en = makeContent(self.folder, 'Weblog', 'weblog') self.weblog_en.setLanguage('en')
def testTranslationIsMovedToTranslatedFolder(self): self.weblog_de = makeTranslation(self.weblog_en, 'de') englishpost = makeContent(self.weblog_en, 'WeblogEntry', 'post') englishpost.setLanguage('en') germanpost = makeTranslation(englishpost, 'de') self.failUnless(englishpost in self.weblog_en.objectValues()) self.failUnless(germanpost in self.weblog_de.objectValues())
def testRenderSelectorWithNavigationRootForAnonymous(self): self.loginAsPortalOwner() en_root = makeContent(self.portal, 'Folder', 'en') en_root.setLanguage('en') directlyProvides(en_root, INavigationRoot) de_root = makeTranslation(en_root, 'de') de_root.setLanguage('de') directlyProvides(de_root, INavigationRoot) no_root = makeTranslation(en_root, 'no') no_root.setLanguage('no') directlyProvides(no_root, INavigationRoot) self.setRoles('Reviewer') pw = self.portal.portal_workflow pw.doActionFor(en_root, 'publish') pw.doActionFor(de_root, 'publish') self.logout() request = self.app.REQUEST selector = TranslatableLanguageSelector( en_root, request, None, None) selector.update() output = selector.render() en_path = en_root.absolute_url() en_link = '<a href="%s?set_language=en"' % en_path self.assert_(en_link in output) de_path = de_root.absolute_url() de_link = '<a href="%s?set_language=de"' % de_path self.assert_(de_link in output) self.assert_('set_language=no' not in output)
def afterSetUp(self): directlyProvides(self.portal.REQUEST, ILinguaPloneProductLayer) self.addLanguage('de') self.setLanguage('en') self.english = makeContent(self.folder, 'SimpleType', 'index_html') self.english.setLanguage('en') self.german = makeTranslation(self.english, 'de')
def testTranslationIsMovedToTranslatedFolder(self): self.folder_de = makeTranslation(self.folder_en, 'de') english = makeContent(self.folder_en, 'SimpleType', 'doc') english.setLanguage('en') german = makeTranslation(english, 'de') self.failUnless(english.getId() in self.folder_en) self.failUnless(german.getId() in self.folder_de)
def testLanguageIndependentField(self): english = makeContent(self.folder, 'SimpleType', 'doc') english.setLanguage('en') german = makeTranslation(english, 'de') contact = 'Test string' english.setTitle('English title') english.setContactName(contact) german.setTitle('German title') self.failIfEqual(english.Title(), german.Title()) self.assertEqual(english.getContactName(), contact) self.assertEqual(english.getRawContactName(), contact) self.assertEqual(german.getContactName(), contact) self.assertEqual(german.getRawContactName(), contact) self.failUnless(english.contactName) self.failUnless(german.contactName) self.failUnless(hasattr(german, 'testing')) self.assertEqual(german.testing, english.contactName) self.assertEqual(english.contactName, german.contactName) contact = 'First name' german.setContactName(contact) self.assertEqual(english.getContactName(), contact) self.assertEqual(english.getRawContactName(), contact) self.assertEqual(german.getContactName(), contact) self.assertEqual(german.getRawContactName(), contact) self.failUnless(english.contactName) self.failUnless(german.contactName) self.failUnless(hasattr(english, 'testing')) self.assertEqual(english.testing, german.contactName) self.assertEqual(english.contactName, german.contactName)
def testLanguageIndependentField(self): english = makeContent(self.folder, 'SimpleType', 'doc') english.setLanguage('en') contact = 'Fred Flintstone' english.setContactName(contact) german = makeTranslation(english, 'de') self.assertEqual(english.getContactName(), contact) self.assertEqual(english.getRawContactName(), contact) self.assertEqual(german.getContactName(), contact) self.assertEqual(german.getRawContactName(), contact) self.failUnless(english.contactName) self.failUnless(german.contactName) self.failUnless(hasattr(german, 'testing')) self.assertEqual(german.testing, english.contactName) self.assertEqual(english.contactName, german.contactName) contact = 'Barney Rubble' german.setContactName(contact) self.assertEqual(english.getContactName(), contact) self.assertEqual(english.getRawContactName(), contact) self.assertEqual(german.getContactName(), contact) self.assertEqual(german.getRawContactName(), contact) self.failUnless(english.contactName) self.failUnless(german.contactName) self.failUnless(hasattr(english, 'testing')) self.assertEqual(english.testing, german.contactName) self.assertEqual(english.contactName, german.contactName) # Sanity check: not all fields are language independent english.setTitle('English title') german.setTitle('German title') self.failIfEqual(english.Title(), german.Title())
def testNeutralContentCannotBeTranslatedDirectly(self): self.folder.setLanguage('') doc = makeContent(self.folder, 'SimpleType', 'doc') self.assertEqual(doc.getLanguage(), '') menu = TranslateMenu('translations') items = menu.getMenuItems(doc, None) self.assertEqual([i['title'] for i in items], [u'label_manage_translations'])
def afterSetUp(self): self.addLanguage('de') self.setLanguage('en') self.english = makeContent(self.folder, 'SimpleType', 'doc') self.english.edit(title='Foo', language='en') self.german = makeTranslation(self.english, 'de') self.german.edit(title='Foo') self.catalog = self.portal.portal_catalog
def testMenuEmptyForUnauthorizedUsers(self): # test menu is empty for unauthorized users: self.loginAsPortalOwner() doc = makeContent(self.portal, 'SimpleType', 'doc') self.login('test_user_1_') self.setRoles('Reader') menu = TranslateMenu('translations') self.assertEqual(menu.getMenuItems(doc, None), [])
def testNotLangIndependentCustomMethodsInNonLP(self): english = makeContent(self.folder, 'NonLPSimpleType', 'doc') english.setLanguage('en') teststring = 'Test string' # If this fails, you can't inherit unless you also get a copy of the schema english.setFourthContactName(teststring) self.assertEqual(english.getFourthContactName(), 'getFourthContactName') self.assertEqual(str(english.contactName4), 'cn4 %s' % teststring)
def testLangIndependentGeneratedMethodsInNonLP(self): english = makeContent(self.folder, 'NonLPSimpleType', 'doc') english.setLanguage('en') teststring = 'Test string' # If this fails, you can't inherit unless you also get a copy of the schema english.setLangIndependentInBase(teststring) self.assertEqual(english.getLangIndependentInBase(), teststring) self.assertEqual(english.getRawLangIndependentInBase(), teststring)
def testLangIndependentInBoth(self): english = makeContent(self.folder, 'DerivedType', 'doc') english.setLanguage('en') german = makeTranslation(english, 'de') teststring = 'Test string' english.setLangIndependentInBoth(teststring) self.assertEqual(german.getLangIndependentInBoth(), teststring) self.assertEqual(german.getRawLangIndependentInBoth(), teststring)
def afterSetUp(self): self.addLanguage('de') self.addLanguage('no') self.setLanguage('en') self.setRoles(['Manager']) en = makeContent(self.portal, 'Folder', 'en') en.setLanguage('en') suben = makeContent(en, 'Folder', 'sub-en') suben.setLanguage('en') self.endoc = makeContent(suben, 'SimpleType', 'endoc') self.endoc.setLanguage('en') makeTranslation(en, 'de') self.dedoc = makeTranslation(self.endoc, 'de') neutral = makeContent(en, 'Folder', 'neutral') neutral.setLanguage('') self.doc = makeContent(neutral, 'SimpleType', 'doc') self.doc.setLanguage('')
def testSetLanguageMoveTranslatedContent(self): self.weblog_de = makeTranslation(self.weblog_en, 'de') en2de = makeContent(self.weblog_en, 'WeblogEntry', 'entry2') en2de.setLanguage('en') transaction.savepoint(optimistic=True) en2de.setLanguage('de') self.failIf(en2de.getId() in self.weblog_en.objectIds()) self.failUnless(en2de.getId() in self.weblog_de.objectIds())
def testSetLanguageMoveTranslatedContent(self): self.folder_de = makeTranslation(self.folder_en, 'de') en2de = makeContent(self.folder_en, 'SimpleType', 'doc2') en2de.setLanguage('en') transaction.savepoint(optimistic=True) en2de.setLanguage('de') self.failIf(en2de.getId() in self.folder_en.objectIds()) self.failUnless(en2de.getId() in self.folder_de.objectIds())
def testFolderTranslationMoveTranslatedContent(self): english1 = makeContent(self.folder_en, 'SimpleType', 'doc1') english1.setLanguage('en') english2 = makeContent(self.folder_en, 'SimpleType', 'doc2') english2.setLanguage('en') german1 = makeTranslation(english1, 'de') german2 = makeTranslation(english2, 'de') transaction.savepoint(optimistic=True) self.folder_de = makeTranslation(self.folder_en, 'de') self.failUnless(english1.getId() in self.folder_en.objectIds()) self.failUnless(english2.getId() in self.folder_en.objectIds()) self.failIf(english1.getId() in self.folder_de.objectIds()) self.failIf(english2.getId() in self.folder_de.objectIds()) self.failUnless(german1.getId() in self.folder_de.objectIds()) self.failUnless(german2.getId() in self.folder_de.objectIds()) self.failIf(german1.getId() in self.folder_en.objectIds()) self.failIf(german2.getId() in self.folder_en.objectIds())
def afterSetUp(self): self.addLanguage('de') self.addLanguage('no') self.setLanguage('en') self.english = makeContent(self.folder, 'SimpleType', 'doc') self.english.setLanguage('en') self.german = makeTranslation(self.english, 'de') self.german.setLanguage('de') self.catalog = getToolByName(self.portal, 'portal_catalog')
def afterSetUp(self): self.addLanguage('de') self.addLanguage('no') self.setLanguage('en') self.english = makeContent(self.folder, 'SimpleType', 'doc') self.english.setLanguage('en') self.german = makeTranslation(self.english, 'de') self.german.setLanguage('de') self.attachRender(TranslatableLanguageSelector)
def testLanguageSpecificContentCanBeTranslatedIntoOtherLanguages(self): doc = makeContent(self.folder, 'SimpleType', 'doc') self.assertEqual(doc.getLanguage(), 'en') menu = TranslateMenu('translations') self.assertEqual([i['title'] for i in menu.getMenuItems(doc, None)], [u'Deutsch', u'label_manage_translations']) self.addLanguage('no') self.assertEqual([i['title'] for i in menu.getMenuItems(doc, None)], [u'Deutsch', u'Norsk', u'label_manage_translations'])
def testLangIndependentGeneratedMethodsInNonLP(self): english = makeContent(self.folder, 'NonLPSimpleType', 'doc') english.setLanguage('en') teststring = 'Test string' # If this fails, you can't inherit unless you also get a copy # of the schema english.setLangIndependentInBase(teststring) self.assertEqual(english.getLangIndependentInBase(), teststring) self.assertEqual(english.getRawLangIndependentInBase(), teststring)
def test_textfield(self): english = makeContent(self.folder, 'SimpleType', 'doc') english.setLanguage('en') english.setNeutralText('<p>Hello</p>') self.assertEqual(english.neutralText.getContentType(), 'text/html') german = makeTranslation(english, 'de') text = german.getNeutralText() self.assertEqual(text, '<p>Hello</p>') self.assertEqual(german.neutralText.getContentType(), 'text/html')