def copyLegislation(self): portal = getToolByName(self, 'portal_url').getPortalObject() folder = getattr(portal.en.legislation.directives, 'provisions-on-workload-ergonomical-and-psychosocial-risks') subfolders = self.ZopeFind(obj=folder, search_sub=1, obj_metatypes='ATFolder') langs = folder.getTranslationLanguages() for subf in subfolders: id, ob = subf if ob.Language() not in ('en',''): continue print "translating folder", ob.absolute_url() linguautils.translate_this(ob, [], 0, langs) linguautils.exec_for_all_langs(ob, linguautils.workflow_action, transition="publish") documents = self.ZopeFind(obj=folder, search_sub=1, obj_metatypes='ATDocument') for doc in documents: id, ob = doc if ob.Language() not in ('en', ''): continue print "translating document", ob.absolute_url() linguautils.translate_this(ob, ['title', 'description', 'text'], 0, langs) linguautils.exec_for_all_langs(ob, linguautils.workflow_action, transition="publish") print "folder:", folder objs = self.ZopeFind(obj=folder, search_sub=1, obj_metatypes='Collage') for item in objs: id, ob = item id = id.split('/')[-1] print "id:", id print "url", ob.absolute_url() print item parent = Acquisition.aq_parent(ob) print parent parentlang = parent.Language() trans = parent.getTranslations() for lang in trans.keys(): if lang == parentlang: continue target = trans[lang][0] # if getattr(Acquisition.aq_base(target), id, None) and type(getattr(Acquisition.aq_base(target), id, None)) == type(ob): # target.manage_delObjects(id) if not getattr(Acquisition.aq_base(target), id, None) or not \ type(getattr(Acquisition.aq_base(target), id, None))==type(ob): cp = ob._getCopy(ob) target._setObject(id, cp) print "doing the copying", cp, [id] else: print "target in lang %s at %s already has obj with id %s" % (lang, target.absolute_url(), id) return "ok!"
def translate_this(self, action): status = IStatusMessage(self.request) context = Acquisition.aq_inner(self.context) data, error = self.extractData() attributes_to_copy = data.get('attributes_to_copy', []) translation_exists = data.get('translation_exists', False) target_languages = data.get('target_languages', []) use_parent_languages = data.get('use_parent_languages', False) if use_parent_languages: parent = Acquisition.aq_parent(context) target_languages = parent.getTranslationLanguages() msg = u"Translate this object to the parent folder's languages." else: msg = u"Translate this object to the manually selected languages." status.addStatusMessage(msg, type="info") info, warnings, errors = utils.translate_this(context, attributes_to_copy, translation_exists, target_languages) self.handle_status(status, info, warnings, errors)
def copyLegislation(self): portal = getToolByName(self, 'portal_url').getPortalObject() folder = getattr( portal.en.legislation.directives, 'provisions-on-workload-ergonomical-and-psychosocial-risks') subfolders = self.ZopeFind(obj=folder, search_sub=1, obj_metatypes='ATFolder') langs = folder.getTranslationLanguages() for subf in subfolders: id, ob = subf if ob.Language() not in ('en', ''): continue print "translating folder", ob.absolute_url() linguautils.translate_this(ob, [], 0, langs) linguautils.exec_for_all_langs(ob, linguautils.workflow_action, transition="publish") documents = self.ZopeFind(obj=folder, search_sub=1, obj_metatypes='ATDocument') for doc in documents: id, ob = doc if ob.Language() not in ('en', ''): continue print "translating document", ob.absolute_url() linguautils.translate_this(ob, ['title', 'description', 'text'], 0, langs) linguautils.exec_for_all_langs(ob, linguautils.workflow_action, transition="publish") print "folder:", folder objs = self.ZopeFind(obj=folder, search_sub=1, obj_metatypes='Collage') for item in objs: id, ob = item id = id.split('/')[-1] print "id:", id print "url", ob.absolute_url() print item parent = Acquisition.aq_parent(ob) print parent parentlang = parent.Language() trans = parent.getTranslations() for lang in trans.keys(): if lang == parentlang: continue target = trans[lang][0] # if getattr(Acquisition.aq_base(target), id, None) and type(getattr(Acquisition.aq_base(target), id, None)) == type(ob): # target.manage_delObjects(id) if not getattr(Acquisition.aq_base(target), id, None) or not \ type(getattr(Acquisition.aq_base(target), id, None))==type(ob): cp = ob._getCopy(ob) target._setObject(id, cp) print "doing the copying", cp, [id] else: print "target in lang %s at %s already has obj with id %s" % ( lang, target.absolute_url(), id) return "ok!"