def __call__(self): marshaller = getComponent('surfrdfs') _content_type, _length, data = marshaller.marshall(self.context) self.request.response.setHeader('Content-Type', 'application/rdf+xml; charset=utf-8') return data
def render(self): """ render """ if not self.available(): return '' marshaller = getComponent('surfrdf') ser = marshaller.marshall(self.context, endLevel=1) if not ser: return "" store = marshaller.store graph = regraph(store) has_license = list(graph.query(has_license_query)) if False in has_license: return "" res = graph.query(license_query) json = json_serialize(res) if json is None: return "" return '<script type="application/ld+json">%s</script>' % json
def afterSetUp(self): super(ATXMLReferenceMarshallTest, self).afterSetUp() self.loginPortalOwner() self.qi = self.portal.portal_quickinstaller self.qi.installProduct('Marshall') self.tool = getToolByName(self.portal, tool_id) self.marshaller = getComponent('atxml')
def render_viewlet(self): """ render viewlet """ marshaller = getComponent('surfrdf') try: obj2surf = marshaller._add_content(self.context) except AssertionError, err: logger.exception(err) return ""
def test_marshall_roundtrip(self): marshaller = getComponent(self.prefix) content = self.infile.read() marshaller.demarshall(self.obj, content) ctype, length, got = marshaller.marshall(self.obj, filename=self.input) normalize = self.input.endswith('xml') self.assertEqualsDiff(got, content, normalize=normalize)
def render(self): """ render """ marshaller = getComponent('surfrdf') try: obj2surf = marshaller._add_content(self.context) except AssertionError, err: logger.exception(err) return ""
def __call__(self): marshaller = getComponent('surfrdf') endLevel = int(self.request.get('endLevel', 1)) try: res = marshaller.marshall(self.context, endLevel=endLevel) except AssertionError, err: logger.exception(err) return ""
def __call__(self): marshaller = getComponent('surfrdf') endLevel = int(self.request.get('endLevel', 1)) _content_type, _length, data = marshaller.marshall(self.context, endLevel=endLevel) self.request.response.setHeader('Content-Type', 'application/rdf+xml; charset=utf-8') return self.sanitize(data)
def test_bad_tales_field(self): self.portal.form.setRecipientName("bad tales expression") _, _, xml = getComponent('atxml').marshall(self.portal.form) data = {'name': '', 'data': xml} #import pdb; pdb.set_trace() adapter = PloneFormMailerExporter(self.portal.form) adapter(data) xml = data['data'] #import pdb; pdb.set_trace() self.assertEqual(self._testField(xml, 'recipient_name', 'bad tales expression'), False)
def __init__(self, transmogrifier, name, options, previous): self.previous = previous self.context = transmogrifier.context self.pathkey = defaultMatcher(options, 'path-key', name, 'path') self.fileskey = options.get('files-key', '_files').strip() self.excludekey = defaultMatcher(options, 'exclude-key', name, 'excluded_fields') self.exclude = filter(None, [i.strip() for i in options.get('exclude', '').splitlines()]) self.atxml = registry.getComponent("atxml")
def __init__(self, transmogrifier, name, options, previous): self.previous = previous self.context = transmogrifier.context self.pathkey = defaultMatcher(options, 'path-key', name, 'path') self.fileskey = options.get('files-key', '_files').strip() self.excludekey = defaultMatcher(options, 'exclude-key', name, 'excluded_fields') self.exclude = filter( None, [i.strip() for i in options.get('exclude', '').splitlines()]) self.atxml = registry.getComponent("atxml")
def __init__(self, transmogrifier, name, options, previous): self.previous = previous self.context = transmogrifier.context self.pathkey = defaultMatcher(options, 'path-key', name, 'path') self.fileskey = defaultMatcher(options, 'files-key', name, 'files') # Marshall doesn't support excluding fields on demarshalling, # we can do this with xml.dom.minodom, if it'll be needed in the future # self.excludekey = defaultMatcher(options, 'exclude-key', name, 'excluded_fields') # self.exclude = filter(None, [i.strip() for i in # options.get('exclude', '').splitlines()]) self.atxml = registry.getComponent("atxml")
def __call__(self): marshaller = getComponent('surfrdf') obj2surf = marshaller._add_content(self.context) if obj2surf is None: return "" ld = ILinkedData(self.context) data = ld.serialize(obj2surf) self.request.response.setHeader('Content-Type', 'application/json; charset=utf-8') return data
def importTranslations(context): if context.readDataFile('eeaploneadmin_localsites.txt') is None: return plone = context.getSite() logger = context.getLogger('eea-localsite') #wf = getToolByName(plone, 'portal_workflow') xliffMarshaller = getComponent('atxliff') #siteLangView = plone.unrestrictedTraverse('@@translatedSitesLanguages') languages = getLanguages(context) for lang, _unused in languages: filename = os.path.join(package_home(GLOBALS), 'exportimport', 'local-sites', 'EEA-2008-0037-00-00-EN%s.xlf' % lang.upper()) xliff = open(filename, 'r').read() # solves #1968, we may change this to regex to be sure we # only change links we want to xliff = xliff.replace('http://glossary.eea.europa.eu/results', 'http://glossary.%s.eea.europa.eu/' % lang) xliff = xliff.replace( 'https://www.eea.europa.eu/quicklinks/educational', '/%s/quicklinks/educational' % lang) xliff = xliff.replace('https://www.eea.europa.eu/themes', '/%s/themes' % lang) xliff = xliff.replace( '<a href="../../organisation/organigram.html"', '<a href="resolveuid/103d4eb4c235fc7e8c60cb799af3cdbd"') xliff = xliff.replace( '<a href="../../organisation/staff.html"', '<a href="resolveuid/256c65bd4fd03cbad2b114885ebe1f60"') xliff = xliff.replace( '<a href="../organisation/staff.html"', '<a href="resolveuid/256c65bd4fd03cbad2b114885ebe1f60"') REPORTS_URL = re.compile( """<target>\s*http://reports.eea.europa.eu/\s*</target>""") xliff = REPORTS_URL.sub('<target>/%s/reports</target>' % lang, xliff) xliffMarshaller.demarshall(plone.SITE, xliff, useTidy=True, keepHTML=True, sync_workflow=True, validatetranslations=True, dump2po='xliff-%s.po' % lang) logger.info("Imported %s" % filename) logger.info("Translations Imported.")
def render(self): marshaller = getComponent('surfrdf') obj2surf = marshaller._add_content(self.context) if obj2surf is None: return "" tpl = u"""<script data-diazo-keep='true' type="application/ld+json"> %s </script>""" data = ILinkedData(self.context).serialize(obj2surf) data = data.decode('utf-8') res = tpl % data return res
def delegate(self, method, obj, data=None, file=None, **kw): if file is not None: kw['file'] = file __traceback_info__ = (method, obj, kw) context = getContext(obj, kw.get('REQUEST')) if context is not obj: # If the object is being created by means of a PUT # then it has no context, and some of the stuff # we are doing here may require a context. # Wrapping it in an ImplicitAcquisitionWrapper should # be safe as long as nothing tries to persist # a reference to the wrapped object. obj = ImplicitAcquisitionWrapper(obj, context) tool = getToolByName(obj, TOOL_ID, None) components = None if tool is not None: info = kw.copy() info['data'] = data info['mode'] = method components = tool.getMarshallersFor(obj, **info) else: # Couldn't find a context to get # hold of the tool or the tool is not installed. logger.log( logging.DEBUG, 'Could not find the marshaller tool. ' 'It might not be installed or you might not ' 'be providing enough context to find it.') # We just use the first component, if one is returned. if components: marshaller = getComponent(components[0]) else: # If no default marshaller was provided then we complain. if self.fallback is None: raise MarshallingException( "Couldn't get a marshaller for %r, %r" % (obj, kw)) # Otherwise, use the default marshaller provided. Note it # must be an instance, not a factory. marshaller = self.fallback __traceback_info__ = (marshaller, method, obj, kw) args = (obj, ) if method == 'demarshall': args += (data, ) method = getattr(marshaller, method) return mapply(method, *args, **kw)
def import_file(relparts, fname, target, handler): marshaller = getComponent(handler) f = open(fname, 'rb+') content = f.read() f.close() curr = parent = target for p in relparts[:-1]: curr = parent.restrictedTraverse(p, None) if curr is None: parent.invokeFactory('Folder', p) curr = parent.restrictedTraverse(p) parent = curr obj_id = relparts[-1] obj = parent.restrictedTraverse(obj_id, None) if obj is None: parent.invokeFactory('Document', obj_id) obj = parent.restrictedTraverse(obj_id) marshaller.demarshall(obj, content) return
def delegate(self, method, obj, data=None, file=None, **kw): if file is not None: kw['file'] = file __traceback_info__ = (method, obj, kw) context = getContext(obj, kw.get('REQUEST')) if context is not obj: # If the object is being created by means of a PUT # then it has no context, and some of the stuff # we are doing here may require a context. # Wrapping it in an ImplicitAcquisitionWrapper should # be safe as long as nothing tries to persist # a reference to the wrapped object. obj = ImplicitAcquisitionWrapper(obj, context) tool = getToolByName(obj, TOOL_ID, None) components = None if tool is not None: info = kw.copy() info['data'] = data info['mode'] = method components = tool.getMarshallersFor(obj, **info) else: # Couldn't find a context to get # hold of the tool or the tool is not installed. logger.log(logging.DEBUG, 'Could not find the marshaller tool. ' 'It might not be installed or you might not ' 'be providing enough context to find it.') # We just use the first component, if one is returned. if components: marshaller = getComponent(components[0]) else: # If no default marshaller was provided then we complain. if self.fallback is None: raise MarshallingException( "Couldn't get a marshaller for %r, %r" % (obj, kw)) # Otherwise, use the default marshaller provided. Note it # must be an instance, not a factory. marshaller = self.fallback __traceback_info__ = (marshaller, method, obj, kw) args = (obj,) if method == 'demarshall': args += (data,) method = getattr(marshaller, method) return mapply(method, *args, **kw)
def importTranslations(context): if context.readDataFile('eeaploneadmin_localsites.txt') is None: return plone = context.getSite() logger = context.getLogger('eea-localsite') #wf = getToolByName(plone, 'portal_workflow') xliffMarshaller = getComponent('atxliff') #siteLangView = plone.unrestrictedTraverse('@@translatedSitesLanguages') languages = getLanguages(context) for lang, _unused in languages: filename = os.path.join(package_home(GLOBALS), 'exportimport', 'local-sites', 'EEA-2008-0037-00-00-EN%s.xlf' % lang.upper()) xliff = open(filename, 'r').read() # solves #1968, we may change this to regex to be sure we # only change links we want to xliff = xliff.replace( 'http://glossary.eea.europa.eu/results', 'http://glossary.%s.eea.europa.eu/' % lang) xliff = xliff.replace('https://www.eea.europa.eu/quicklinks/educational', '/%s/quicklinks/educational' % lang) xliff = xliff.replace( 'https://www.eea.europa.eu/themes', '/%s/themes' % lang) xliff = xliff.replace('<a href="../../organisation/organigram.html"', '<a href="resolveuid/103d4eb4c235fc7e8c60cb799af3cdbd"') xliff = xliff.replace('<a href="../../organisation/staff.html"', '<a href="resolveuid/256c65bd4fd03cbad2b114885ebe1f60"') xliff = xliff.replace('<a href="../organisation/staff.html"', '<a href="resolveuid/256c65bd4fd03cbad2b114885ebe1f60"') REPORTS_URL = re.compile( """<target>\s*http://reports.eea.europa.eu/\s*</target>""") xliff = REPORTS_URL.sub('<target>/%s/reports</target>' % lang, xliff) xliffMarshaller.demarshall( plone.SITE, xliff, useTidy=True, keepHTML=True, sync_workflow=True, validatetranslations=True, dump2po='xliff-%s.po' % lang) logger.info("Imported %s" % filename) logger.info("Translations Imported.")
def test_data_corrector(self): _, _, xml = getComponent('atxml').marshall(self.portal.form) data = {'name': '', 'data': xml} #import pdb; pdb.set_trace() adapter = PloneFormMailerExporter(self.portal.form) adapter(data) xml = data['data'] self.assertEqual(self._testField(xml, 'recipient_name', 'Recipient'), True) self.assertEqual( self._testField(xml, 'cc_recipients', ['*****@*****.**', '*****@*****.**']), True ) self.assertEqual( self._testField(xml, 'bcc_recipients', ['*****@*****.**', '*****@*****.**']), True ) self.assertEqual(self._testField(xml, 'subject', 'string:Email subject'), True)
def __init__(self, context, transmogrifier): self.context = context self.transmogrifier = transmogrifier self.marshaller = getComponent('atxml')
def afterSetUp(self): super(BlobMarshallTest, self).afterSetUp() self.loginAsPortalOwner() registry.manage_addRegistry(self.portal) self.tool = getToolByName(self.portal, tool_id) self.marshaller = getComponent('atxml')
def marshall_data(self, obj): from Products.Marshall.registry import getComponent marshaller = getComponent('primary_field') return self.marshall(obj, marshaller)
def __init__(self, context): self.context = context self.marshaller = getComponent('atxml')
def setupLocalSites(context): if context.readDataFile('eeaploneadmin_localsites.txt') is None: return plone = context.getSite() logger = context.getLogger('eea-localsite') qi = getToolByName(plone, 'portal_quickinstaller') if not qi.isProductInstalled('RedirectionTool'): logger.info("EEAPloneAdmin:local-sites: RedirectionTool " "needs to be installed") return sendWorkflowEmails = plone.getProperty('send_workflow_emails') if sendWorkflowEmails is None: plone.manage_addProperty('send_workflow_emails', False, 'boolean') sendWorkflowEmails = True else: plone.manage_changeProperties(send_workflow_emails=False) languages = getLanguages(context) logger.info("EEAPloneAdmin:local-sites: setup local sites") wf = getToolByName(plone, 'portal_workflow') utils = getToolByName(plone, 'plone_utils') local = getattr(plone, 'SITE') en = local title = _(u'European Environment Agency') if not hasattr(en, 'introduction'): en.invokeFactory('Document', id='introduction', title='Introduction') enIntro = en['introduction'] if not hasattr(en, 'reports'): en.invokeFactory('Folder', id='reports', title='Reports') enReportsFolder = en['reports'] enReportsFolder.invokeFactory('Document', id='reports', title='Reports') enReportsFolder.setDefaultPage('reports') enReportsFolder = en['reports'] enReports = enReportsFolder['reports'] for lang, _unused in languages: alreadyDone = [] if not DevelopmentMode and hasattr(plone, lang): # if we are in production we don't want to change # already migrated local sites logger.info("Skipping language %s" % lang) continue translation = en.getTranslation(lang) if translation is None: en.addTranslation(lang) transaction.savepoint() translation = en.getTranslation(lang) translation.setId(lang) translation.unmarkCreationFlag() wf.doActionFor(translation, 'publish', comment='Initial publish by method setupLocalSite') alsoProvides(translation, INavigationRoot) logger.info("added localsite %s" % lang) if translation.getProperty('navigationmanager_site') is None: translation.manage_addProperty('navigationmanager_site', 'default-%s' % lang, 'string') translation.setLayout('frontpage_view') translation.setTitle(translate(title, target_language=lang)) for path, portalType, msgId in translateFromSite: paths = path.split('/') obj = en for p in paths: obj = getattr(obj, p, None) if obj is None: logger.info("EEAPloneAdmin:local-sites: " "WARNING No existing object %s" % path) continue if obj in alreadyDone: continue doc = obj.getTranslation(lang) if doc is None: obj.addTranslation(lang) doc = obj.getTranslation(lang) doc.unmarkCreationFlag() originalState = wf.getInfoFor(obj, 'review_state') if originalState == 'published': wf.doActionFor(doc, 'publish', comment='Initial publish by method setupLocalSite') elif originalState == 'visible' and portalType != 'Folder': wf.doActionFor(doc, 'submit', comment='Initial submit by method setupLocalSite') wf.doActionFor(doc, 'show', comment='Initial show by method setupLocalSite') doc.setTitle(translate(_(msgId or obj.Title()), target_language=lang)) if obj.getId() in excludeFromNav: doc.setExcludeFromNav(True) if utils.isDefaultPage(obj): parent = aq_parent(aq_inner(doc)) parent.setDefaultPage(doc.getId()) if obj.getProperty('layout') is not None: doc.setLayout(obj.getLayout()) doc.reindexObject() alreadyDone.append(obj) transaction.savepoint() if not hasattr(translation, 'introduction'): xliffMarshaller = getComponent('atxliff') TITLE = re.compile("""<tr> \r\n <td width="100%" colspan="3" valign="top" class="TeaserBoxHeaderEEA30sec" align="center"> \r\n <p class="head0w">(.*)</p>\r\n </td>\r\n </tr>\r\n """) TITLE_TO_REMOVE = re.compile("""<tr> \r\n <td width="100%" colspan="3" valign="top" class="TeaserBoxHeaderEEA30sec" align="center"> \r\n <p class="head0w">.*</p>\r\n </td>\r\n </tr>\r\n """) try: filename = os.path.join(package_home(GLOBALS), 'exportimport', 'local-sites', 'introduction-%s.xlf' % lang) xliff = open(filename, 'r').read() newTitle = TITLE.findall(xliff) xliff = TITLE_TO_REMOVE.sub('', xliff) # set path to the english introduction xliff = xliff.replace( 'original="/index_html"', 'original="%s"' % '/'.join( enIntro.getPhysicalPath())) # in plone the body field is called text xliff = xliff.replace('id="body"', 'id="text"') # fix xhtml xliff = xliff.replace('<br/>', '<br />') # fix broke resolveuid # about-us/governance/intro - List of Management Board Members xliff = xliff.replace( 'resolveuid/3374ee862f322175658ae0109cfa4d8d', 'resolveuid/883275041407e0cfea1bdfe9961f2252') # about-us/governance/intro - # List of Scientific Committee members xliff = xliff.replace( 'resolveuid/c48511d8d406547c9a6ce84ee94dc781', 'resolveuid/7957a7529ed5df88caa7ad40ee9859f2') xliffMarshaller.demarshall(enIntro, xliff, useTidy=True, keepHTML=False) intro = enIntro.getTranslation(lang) intro.unmarkCreationFlag() if len(newTitle) == 2: intro.setTitle(newTitle[1]) else: logger.info("EEAPloneAdmin:local-sites title not " "changed for %s" % filename) except Exception: logger.info("EEAPloneAdmin:local-sites ERROR failed " "to load %s" % filename) if not hasattr(translation, 'reports'): rssTitle = _(u'Reports') # reports folder enReportsFolder.addTranslation(lang) rfolder = enReportsFolder.getTranslation(lang) rfolder.unmarkCreationFlag() rfolder.setTitle(translate(rssTitle, target_language=lang)) rfolder.manage_addProperty('navigationmanager_menuid', 'products', 'string') enReports.addTranslation(lang) doc = enReports.getTranslation(lang) doc.unmarkCreationFlag() doc.setTitle(translate(rssTitle, target_language=lang)) rfolder.setDefaultPage('reports') transaction.savepoint() wf.doActionFor(doc, 'publish', comment='Initial publish by method setupLocalSite') setupTranslateSiteStructure(context) setupNavigationManager(context) setupLocalRDFRepositories(context) themecentreFix(context) importTranslations(context) setupRetagAllTranslations(context) fixPromotion(context) fixLangIndependentFields(context) catalog = getToolByName(plone, 'portal_catalog') # catalog.manage_catalogReindex redirects so we do it here pgthreshold = catalog._getProgressThreshold() handler = ZLogHandler(pgthreshold) if pgthreshold > 0 else None catalog.refreshCatalog(clear=1, pghandler=handler) plone.manage_changeProperties(send_workflow_emails=sendWorkflowEmails) logger.info("LOCAL-SITES are up online")
def marshall_metadata(self, obj): from Products.Marshall.registry import getComponent marshaller = getComponent('atxml') return self.marshall(obj, marshaller)
def setupLocalSites(context): if context.readDataFile('eeaploneadmin_localsites.txt') is None: return plone = context.getSite() logger = context.getLogger('eea-localsite') qi = getToolByName(plone, 'portal_quickinstaller') if not qi.isProductInstalled('RedirectionTool'): logger.info("EEAPloneAdmin:local-sites: RedirectionTool " "needs to be installed") return sendWorkflowEmails = plone.getProperty('send_workflow_emails') if sendWorkflowEmails is None: plone.manage_addProperty('send_workflow_emails', False, 'boolean') sendWorkflowEmails = True else: plone.manage_changeProperties(send_workflow_emails=False) languages = getLanguages(context) logger.info("EEAPloneAdmin:local-sites: setup local sites") wf = getToolByName(plone, 'portal_workflow') utils = getToolByName(plone, 'plone_utils') local = getattr(plone, 'SITE') en = local title = _(u'European Environment Agency') if not hasattr(en, 'introduction'): en.invokeFactory('Document', id='introduction', title='Introduction') enIntro = en['introduction'] if not hasattr(en, 'reports'): en.invokeFactory('Folder', id='reports', title='Reports') enReportsFolder = en['reports'] enReportsFolder.invokeFactory('Document', id='reports', title='Reports') enReportsFolder.setDefaultPage('reports') enReportsFolder = en['reports'] enReports = enReportsFolder['reports'] for lang, _unused in languages: alreadyDone = [] if not DevelopmentMode and hasattr(plone, lang): # if we are in production we don't want to change # already migrated local sites logger.info("Skipping language %s" % lang) continue translation = en.getTranslation(lang) if translation is None: en.addTranslation(lang) transaction.savepoint() translation = en.getTranslation(lang) translation.setId(lang) translation.unmarkCreationFlag() wf.doActionFor(translation, 'publish', comment='Initial publish by method setupLocalSite') alsoProvides(translation, INavigationRoot) logger.info("added localsite %s" % lang) if translation.getProperty('navigationmanager_site') is None: translation.manage_addProperty('navigationmanager_site', 'default-%s' % lang, 'string') translation.setLayout('frontpage_view') translation.setTitle(translate(title, target_language=lang)) for path, portalType, msgId in translateFromSite: paths = path.split('/') obj = en for p in paths: obj = getattr(obj, p, None) if obj is None: logger.info("EEAPloneAdmin:local-sites: " "WARNING No existing object %s" % path) continue if obj in alreadyDone: continue doc = obj.getTranslation(lang) if doc is None: obj.addTranslation(lang) doc = obj.getTranslation(lang) doc.unmarkCreationFlag() originalState = wf.getInfoFor(obj, 'review_state') if originalState == 'published': wf.doActionFor( doc, 'publish', comment='Initial publish by method setupLocalSite') elif originalState == 'visible' and portalType != 'Folder': wf.doActionFor( doc, 'submit', comment='Initial submit by method setupLocalSite') wf.doActionFor( doc, 'show', comment='Initial show by method setupLocalSite') doc.setTitle( translate(_(msgId or obj.Title()), target_language=lang)) if obj.getId() in excludeFromNav: doc.setExcludeFromNav(True) if utils.isDefaultPage(obj): parent = aq_parent(aq_inner(doc)) parent.setDefaultPage(doc.getId()) if obj.getProperty('layout') is not None: doc.setLayout(obj.getLayout()) doc.reindexObject() alreadyDone.append(obj) transaction.savepoint() if not hasattr(translation, 'introduction'): xliffMarshaller = getComponent('atxliff') TITLE = re.compile( """<tr> \r\n <td width="100%" colspan="3" valign="top" class="TeaserBoxHeaderEEA30sec" align="center"> \r\n <p class="head0w">(.*)</p>\r\n </td>\r\n </tr>\r\n """ ) TITLE_TO_REMOVE = re.compile( """<tr> \r\n <td width="100%" colspan="3" valign="top" class="TeaserBoxHeaderEEA30sec" align="center"> \r\n <p class="head0w">.*</p>\r\n </td>\r\n </tr>\r\n """ ) try: filename = os.path.join(package_home(GLOBALS), 'exportimport', 'local-sites', 'introduction-%s.xlf' % lang) xliff = open(filename, 'r').read() newTitle = TITLE.findall(xliff) xliff = TITLE_TO_REMOVE.sub('', xliff) # set path to the english introduction xliff = xliff.replace( 'original="/index_html"', 'original="%s"' % '/'.join(enIntro.getPhysicalPath())) # in plone the body field is called text xliff = xliff.replace('id="body"', 'id="text"') # fix xhtml xliff = xliff.replace('<br/>', '<br />') # fix broke resolveuid # about-us/governance/intro - List of Management Board Members xliff = xliff.replace( 'resolveuid/3374ee862f322175658ae0109cfa4d8d', 'resolveuid/883275041407e0cfea1bdfe9961f2252') # about-us/governance/intro - # List of Scientific Committee members xliff = xliff.replace( 'resolveuid/c48511d8d406547c9a6ce84ee94dc781', 'resolveuid/7957a7529ed5df88caa7ad40ee9859f2') xliffMarshaller.demarshall(enIntro, xliff, useTidy=True, keepHTML=False) intro = enIntro.getTranslation(lang) intro.unmarkCreationFlag() if len(newTitle) == 2: intro.setTitle(newTitle[1]) else: logger.info("EEAPloneAdmin:local-sites title not " "changed for %s" % filename) except Exception: logger.info("EEAPloneAdmin:local-sites ERROR failed " "to load %s" % filename) if not hasattr(translation, 'reports'): rssTitle = _(u'Reports') # reports folder enReportsFolder.addTranslation(lang) rfolder = enReportsFolder.getTranslation(lang) rfolder.unmarkCreationFlag() rfolder.setTitle(translate(rssTitle, target_language=lang)) rfolder.manage_addProperty('navigationmanager_menuid', 'products', 'string') enReports.addTranslation(lang) doc = enReports.getTranslation(lang) doc.unmarkCreationFlag() doc.setTitle(translate(rssTitle, target_language=lang)) rfolder.setDefaultPage('reports') transaction.savepoint() wf.doActionFor(doc, 'publish', comment='Initial publish by method setupLocalSite') setupTranslateSiteStructure(context) setupNavigationManager(context) setupLocalRDFRepositories(context) themecentreFix(context) importTranslations(context) setupRetagAllTranslations(context) fixPromotion(context) fixLangIndependentFields(context) catalog = getToolByName(plone, 'portal_catalog') # catalog.manage_catalogReindex redirects so we do it here pgthreshold = catalog._getProgressThreshold() handler = ZLogHandler(pgthreshold) if pgthreshold > 0 else None catalog.refreshCatalog(clear=1, pghandler=handler) plone.manage_changeProperties(send_workflow_emails=sendWorkflowEmails) logger.info("LOCAL-SITES are up online")