def multilingualMoveObject(content, language): """ Move content object and its contained objects to a new language folder Also set the language on all the content moved """ target_folder = ITranslationLocator(content)(language) parent = aq_parent(content) cb_copy_data = parent.manage_cutObjects(content.getId()) list_ids = target_folder.manage_pasteObjects(cb_copy_data) new_id = list_ids[0]['new_id'] new_object = target_folder[new_id] return new_object
def __call__(self): """ Explore the site's content and place it on the right RLF """ context = aq_inner(self.context) pl = getToolByName(context, "portal_languages") pu = getToolByName(context, "portal_url") portal = pu.getPortalObject() supported_langs = pl.getSupportedLanguages() output = [] for path, obj in findObjects(portal): try: lang_adptr = ILanguage(obj) except: info_str = "Found object %s with no language support." % (path) logger.info(info_str) output.append(info_str) continue obj_lang = lang_adptr.get_language() if obj_lang not in supported_langs: info_str = "Found object %s with unsupported language %s." % ( path, obj_lang) logger.info(info_str) output.append(info_str) else: target_folder = ITranslationLocator(obj)(obj_lang) parent = aq_parent(obj) if IPloneSiteRoot.providedBy(parent) \ and ITranslatable.providedBy(obj) \ and not INavigationRoot.providedBy(obj): target_folder = getattr(portal, obj_lang, None) if target_folder != parent: cb_copy_data = parent.manage_cutObjects(obj.getId()) list_ids = target_folder.manage_pasteObjects(cb_copy_data) new_id = list_ids[0]['new_id'] new_object = target_folder[new_id] info_str = "Moved object %s to lang folder %s" % ( parent.getPhysicalPath(), obj_lang) logger.info(info_str) output.append(new_object.id) return output