def test_move_content_proper_language_folder_existing_translation_inside(self): self.assertTrue(getattr(self.portal, 'en')) self.portal.en.invokeFactory('Folder', 'new11', title=u"An archetypes based folder") new11 = self.portal.en['new11'] new11.invokeFactory('Document', 'doc11', title=u"An archetypes based doc") doc1_ca = makeTranslation(self.portal.en.new11.doc11, 'ca') doc1_ca.edit(title="Foo", language='ca') self.assertTrue(self.portal.ca.doc11) transaction.commit() # Change the content language of the created folder to 'ca' multilingualMoveObject(new11, 'ca') self.assertTrue(self.portal.ca.new11) self.assertTrue(self.portal.ca.new11.doc11) self.assertEqual(ITranslationManager( self.portal.ca.new11.doc11).get_translations(), {'ca': self.portal.ca.new11.doc11}) self.assertEqual(ITranslationManager(doc1_ca).get_translations(), {'ca': doc1_ca}) self.assertEqual(ILanguage(self.portal.ca.new11).get_language(), 'ca') self.assertEqual(ILanguage(self.portal.ca.new11.doc11).get_language(), 'ca')
def test_move_content_proper_language_folder_existing_translation_inside( self): self.assertTrue(getattr(self.portal, 'en')) self.portal.en.invokeFactory('Folder', 'new11', title=u"An archetypes based folder") new11 = self.portal.en['new11'] new11.invokeFactory('Document', 'doc11', title=u"An archetypes based doc") doc1_ca = makeTranslation(self.portal.en.new11.doc11, 'ca') doc1_ca.edit(title="Foo", language='ca') self.assertTrue(self.portal.ca.doc11) transaction.commit() # Change the content language of the created folder to 'ca' multilingualMoveObject(new11, 'ca') self.assertTrue(self.portal.ca.new11) self.assertTrue(self.portal.ca.new11.doc11) self.assertEqual( ITranslationManager(self.portal.ca.new11.doc11).get_translations(), {'ca': self.portal.ca.new11.doc11}) self.assertEqual( ITranslationManager(doc1_ca).get_translations(), {'ca': doc1_ca}) self.assertEqual(ILanguage(self.portal.ca.new11).get_language(), 'ca') self.assertEqual( ILanguage(self.portal.ca.new11.doc11).get_language(), 'ca')
def test_move_content_proper_language_folder(self): self.assertTrue(getattr(self.portal, 'en')) self.portal.en.invokeFactory('Folder', 'new1', title=u"An archetypes based folder") new1 = self.portal.en['new1'] new1.invokeFactory('Document', 'doc1', title=u"An archetypes based doc") transaction.commit() # Change the content language of the created folder to 'ca' multilingualMoveObject(new1, 'ca') self.assertTrue(self.portal.ca.new1) self.assertTrue(self.portal.ca.new1.doc1) self.assertEqual(ILanguage(self.portal.ca.new1).get_language(), 'ca') self.assertEqual(ILanguage(self.portal.ca.new1.doc1).get_language(), 'ca')
def test_moving_shared_content_to_lrf(self): # Create shared document createContentInContainer( self.portal, 'Document', title=u"Test document") uuid = IUUID(self.portal['test-document']) # CHeck thats ghost is ghost self.assertTrue(is_shared(self.portal.ca['test-document'])) # Check is in the catalog brains = self.portal.portal_catalog.searchResults(UID=uuid) self.assertEqual(len(brains), 1) self.assertEqual(brains[0].getPath(), '/plone/test-document') brains = self.portal.portal_catalog.searchResults( UID='{0:s}-ca'.format(uuid)) self.assertEqual(len(brains), 1) self.assertEqual(brains[0].getPath(), '/plone/ca/test-document') brains = self.portal.portal_catalog.searchResults( UID='{0:s}-es'.format(uuid)) self.assertEqual(len(brains), 1) self.assertEqual(brains[0].getPath(), '/plone/es/test-document') # MOVE! moved = multilingualMoveObject(self.portal.ca['test-document'], 'ca') # Check that the old and the new uuid are the same moved_uuid = IUUID(self.portal.ca['copy_of_test-document']) self.assertEqual(uuid, moved_uuid) self.assertFalse(is_shared(moved)) # Check portal_catalog is updated after move brains = self.portal.portal_catalog.searchResults(UID=uuid) self.assertEqual(len(brains), 1) self.assertEqual(brains[0].getPath(), '/plone/ca/copy_of_test-document') brains = self.portal.portal_catalog.searchResults( UID='{0:s}-ca'.format(uuid)) self.assertEqual(len(brains), 0) brains = self.portal.portal_catalog.searchResults( UID='{0:s}-es'.format(uuid)) self.assertEqual(len(brains), 0) # Check which translations it have self.assertEqual( ITranslationManager(moved).get_translations(), {'ca': moved}) ITranslationManager(moved).add_translation('es') self.assertEqual( ITranslationManager(moved).get_translations(), {'ca': moved, 'es': self.portal.es['copy_of_test-document']}) # Check that ghost is no longer ghost self.assertFalse( is_shared(self.portal.es['copy_of_test-document']))
def handle_update(self, action): data, errors = self.extractData() new_object = self.context if not errors: language = data['language'] # We need to move the object to its place!! new_object = multilingualMoveObject(self.context, language) return self.request.response.redirect(new_object.absolute_url() + '?set_language=' + language)
def test_move_content_existing_translation_inside(self): f_ca = createContentInContainer(self.portal['ca'], 'Folder', title=u"Test folder") a_ca = createContentInContainer(self.portal['ca']['test-folder'], 'Document', title=u"Test document") a_en = api.translate(a_ca, 'en') translations = ITranslationManager(self.portal['en'][a_en.id]) self.assertEqual( translations.get_translations(), { 'ca': self.portal['ca'][f_ca.id][a_ca.id], 'en': self.portal['en'][a_ca.id] }) self.assertIn(a_en.id, self.portal['en'].objectIds()) self.assertEqual(a_en, self.portal['en'][a_en.id]) # Change the content language of the created folder to 'en' multilingualMoveObject(f_ca, 'en') self.assertIn(f_ca.id, self.portal['en'].objectIds()) self.assertEqual(f_ca, self.portal['en'][f_ca.id]) self.assertIn(a_ca.id, self.portal['en'][f_ca.id].objectIds()) self.assertEqual(a_ca, self.portal['en'][f_ca.id][a_ca.id]) adapter = ILanguage(self.portal['en'][f_ca.id]) self.assertEqual(adapter.get_language(), 'en') adapter = ILanguage(self.portal['en'][f_ca.id][a_ca.id]) self.assertEqual(adapter.get_language(), 'en') translations = ITranslationManager(self.portal['en'][f_ca.id][a_ca.id]) self.assertEqual(translations.get_translations(), {'en': self.portal['en'][f_ca.id][a_ca.id]}) translations = ITranslationManager(self.portal['en'][a_en.id]) self.assertEqual(translations.get_translations(), {'en': self.portal['en'][a_en.id]})
def test_move_content_proper_language_folder(self): self.assertTrue(getattr(self.portal, 'en')) self.portal.en.invokeFactory('Folder', 'new1', title=u"An archetypes based folder") new1 = self.portal.en['new1'] new1.invokeFactory('Document', 'doc1', title=u"An archetypes based doc") transaction.commit() # Change the content language of the created folder to 'ca' multilingualMoveObject(new1, 'ca') self.assertTrue(self.portal.ca.new1) self.assertTrue(self.portal.ca.new1.doc1) self.assertEqual(ILanguage(self.portal.ca.new1).get_language(), 'ca') self.assertEqual( ILanguage(self.portal.ca.new1.doc1).get_language(), 'ca')
def test_move_content_existing_translation_inside(self): f_ca = createContentInContainer( self.portal['ca'], 'Folder', title=u"Test folder") a_ca = createContentInContainer( self.portal['ca']['test-folder'], 'Document', title=u"Test document") a_en = api.translate(a_ca, 'en') translations = ITranslationManager(self.portal['en'][a_en.id]) self.assertEqual(translations.get_translations(), {'ca': self.portal['ca'][f_ca.id][a_ca.id], 'en': self.portal['en'][a_ca.id]}) self.assertIn(a_en.id, self.portal['en'].objectIds()) self.assertEqual(a_en, self.portal['en'][a_en.id]) # Change the content language of the created folder to 'en' multilingualMoveObject(f_ca, 'en') self.assertIn(f_ca.id, self.portal['en'].objectIds()) self.assertEqual(f_ca, self.portal['en'][f_ca.id]) self.assertIn(a_ca.id, self.portal['en'][f_ca.id].objectIds()) self.assertEqual(a_ca, self.portal['en'][f_ca.id][a_ca.id]) adapter = ILanguage(self.portal['en'][f_ca.id]) self.assertEqual(adapter.get_language(), 'en') adapter = ILanguage(self.portal['en'][f_ca.id][a_ca.id]) self.assertEqual(adapter.get_language(), 'en') translations = ITranslationManager(self.portal['en'][f_ca.id][a_ca.id]) self.assertEqual(translations.get_translations(), {'en': self.portal['en'][f_ca.id][a_ca.id]}) translations = ITranslationManager(self.portal['en'][a_en.id]) self.assertEqual(translations.get_translations(), {'en': self.portal['en'][a_en.id]})
def test_move_content_proper_language_folder(self): f_ca = createContentInContainer( self.portal['ca'], 'Folder', title=u"Test folder") a_ca = createContentInContainer( self.portal['ca']['test-folder'], 'Document', title=u"Test document") # Change the content language of the created folder to 'es' multilingualMoveObject(f_ca, 'es') self.assertIn(f_ca.id, self.portal['es'].objectIds()) self.assertEqual(f_ca, self.portal['es'][f_ca.id]) self.assertIn(a_ca.id, self.portal['es'][f_ca.id].objectIds()) self.assertEqual(a_ca, self.portal['es'][f_ca.id][a_ca.id]) adapter = ILanguage(self.portal['es'][f_ca.id]) self.assertEqual(adapter.get_language(), 'es') adapter = ILanguage(self.portal['es'][f_ca.id][a_ca.id]) self.assertEqual(adapter.get_language(), 'es')
def test_moving_shared_content_to_lrf(self): # Create shared document createContentInContainer(self.portal, "LIF", title=u"Media", checkConstraints=False) createContentInContainer(self.portal.media, "Document", title=u"Test document") uuid = IUUID(self.portal.media["test-document"]) # Check that ghost is ghost self.assertTrue(is_language_independent(self.portal.ca.media["test-document"])) # Check is in the catalog brains = self.portal.portal_catalog.searchResults(UID=uuid) self.assertEqual(len(brains), 1) self.assertEqual(brains[0].getPath(), "/plone/media/test-document") brains = self.portal.portal_catalog.searchResults(UID="{0:s}-ca".format(uuid)) self.assertEqual(len(brains), 1) self.assertEqual(brains[0].getPath(), "/plone/ca/media/test-document") brains = self.portal.portal_catalog.searchResults(UID="{0:s}-es".format(uuid)) self.assertEqual(len(brains), 1) self.assertEqual(brains[0].getPath(), "/plone/es/media/test-document") # MOVE! moved = multilingualMoveObject(self.portal.ca.media["test-document"], "ca") # Check that the old and the new uuid are the same moved_uuid = IUUID(self.portal.ca["test-document"]) self.assertEqual(uuid, moved_uuid) self.assertFalse(is_language_independent(moved)) # Check portal_catalog is updated after move brains = self.portal.portal_catalog.searchResults(UID=uuid) self.assertEqual(len(brains), 1) self.assertEqual(brains[0].getPath(), "/plone/ca/test-document") brains = self.portal.portal_catalog.searchResults(UID="{0:s}-ca".format(uuid)) self.assertEqual(len(brains), 0) brains = self.portal.portal_catalog.searchResults(UID="{0:s}-es".format(uuid)) self.assertEqual(len(brains), 0) # Check which translations it have self.assertEqual(ITranslationManager(moved).get_translations(), {"ca": moved}) ITranslationManager(moved).add_translation("es") self.assertEqual( ITranslationManager(moved).get_translations(), {"ca": moved, "es": self.portal.es["test-document"]} ) # Check that ghost is no longer ghost self.assertFalse(is_language_independent(self.portal.es["test-document"]))
def test_move_content_proper_language_folder(self): f_ca = createContentInContainer(self.portal['ca'], 'Folder', title=u"Test folder") a_ca = createContentInContainer(self.portal['ca']['test-folder'], 'Document', title=u"Test document") # Change the content language of the created folder to 'es' multilingualMoveObject(f_ca, 'es') self.assertIn(f_ca.id, self.portal['es'].objectIds()) self.assertEqual(f_ca, self.portal['es'][f_ca.id]) self.assertIn(a_ca.id, self.portal['es'][f_ca.id].objectIds()) self.assertEqual(a_ca, self.portal['es'][f_ca.id][a_ca.id]) adapter = ILanguage(self.portal['es'][f_ca.id]) self.assertEqual(adapter.get_language(), 'es') adapter = ILanguage(self.portal['es'][f_ca.id][a_ca.id]) self.assertEqual(adapter.get_language(), 'es')
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 test_moving_shared_content_to_lrf(self): # Create shared document createContentInContainer( self.portal, 'LIF', title=u"Assets", checkConstraints=False) createContentInContainer( self.portal.assets, 'Document', title=u"Test document") uuid = IUUID(self.portal.assets['test-document']) # Check that ghost is ghost self.assertTrue( is_language_independent(self.portal.ca.assets['test-document'])) # Check is in the catalog brains = self.portal.portal_catalog.searchResults(UID=uuid) self.assertEqual(len(brains), 1) self.assertEqual(brains[0].getPath(), '/plone/assets/test-document') brains = self.portal.portal_catalog.searchResults( UID='{0:s}-ca'.format(uuid)) self.assertEqual(len(brains), 1) self.assertEqual(brains[0].getPath(), '/plone/ca/assets/test-document') brains = self.portal.portal_catalog.searchResults( UID='{0:s}-es'.format(uuid)) self.assertEqual(len(brains), 1) self.assertEqual(brains[0].getPath(), '/plone/es/recursos/test-document') # MOVE! moved = multilingualMoveObject( self.portal.ca.assets['test-document'], 'ca') # Check that the old and the new uuid are the same moved_uuid = IUUID(self.portal.ca['test-document']) self.assertEqual(uuid, moved_uuid) self.assertFalse(is_language_independent(moved)) # Check portal_catalog is updated after move brains = self.portal.portal_catalog.searchResults(UID=uuid) self.assertEqual(len(brains), 1) self.assertEqual(brains[0].getPath(), '/plone/ca/test-document') brains = self.portal.portal_catalog.searchResults( UID='{0:s}-ca'.format(uuid)) self.assertEqual(len(brains), 0) brains = self.portal.portal_catalog.searchResults( UID='{0:s}-es'.format(uuid)) self.assertEqual(len(brains), 0) # Check which translations it have self.assertEqual( ITranslationManager(moved).get_translations(), {'ca': moved}) ITranslationManager(moved).add_translation('es') self.assertEqual( ITranslationManager(moved).get_translations(), {'ca': moved, 'es': self.portal.es['test-document']}) # Check that ghost is no longer ghost self.assertFalse( is_language_independent(self.portal.es['test-document']))