コード例 #1
0
ファイル: export.py プロジェクト: eea/eea.rdfmarshaller
    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
コード例 #2
0
    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
コード例 #3
0
ファイル: export.py プロジェクト: eea/eea.rdfmarshaller
    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
コード例 #4
0
ファイル: test_marshall.py プロジェクト: a25kk/stv2
 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')
コード例 #5
0
ファイル: viewlets.py プロジェクト: eea/eea.rdfmarshaller
    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
コード例 #6
0
ファイル: viewlets.py プロジェクト: eea/eea.rdfmarshaller
 def render_viewlet(self):
     """ render viewlet """
     marshaller = getComponent('surfrdf')
     try:
         obj2surf = marshaller._add_content(self.context)
     except AssertionError, err:
         logger.exception(err)
         return ""
コード例 #7
0
ファイル: test_marshall.py プロジェクト: a25kk/stv2
 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)
コード例 #8
0
ファイル: viewlets.py プロジェクト: eea/eea.rdfmarshaller
 def render(self):
     """ render """
     marshaller = getComponent('surfrdf')
     try:
         obj2surf = marshaller._add_content(self.context)
     except AssertionError, err:
         logger.exception(err)
         return ""
コード例 #9
0
ファイル: export.py プロジェクト: eea/eea.rdfmarshaller
    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 ""
コード例 #10
0
    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)
コード例 #11
0
ファイル: export.py プロジェクト: eea/eea.rdfmarshaller
    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 ""
コード例 #12
0
ファイル: test_export.py プロジェクト: kroman0/products
 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)
コード例 #13
0
ファイル: marshall.py プロジェクト: kroman0/products
    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")
コード例 #14
0
    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")
コード例 #15
0
    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")
コード例 #16
0
    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")
コード例 #17
0
ファイル: export.py プロジェクト: eea/eea.rdfmarshaller
    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
コード例 #18
0
ファイル: export.py プロジェクト: eea/eea.rdfmarshaller
    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
コード例 #19
0
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.")
コード例 #20
0
    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
コード例 #21
0
 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)
コード例 #22
0
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
コード例 #23
0
ファイル: marshaller.py プロジェクト: CGTIC/Plone_SP
 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)
コード例 #24
0
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
コード例 #25
0
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.")
コード例 #26
0
ファイル: test_export.py プロジェクト: kroman0/products
 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)
コード例 #27
0
 def __init__(self, context, transmogrifier):
     self.context = context
     self.transmogrifier = transmogrifier
     self.marshaller = getComponent('atxml')
コード例 #28
0
 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')
コード例 #29
0
 def __init__(self, context, transmogrifier):
     self.context = context
     self.transmogrifier = transmogrifier
     self.marshaller = getComponent('atxml')
コード例 #30
0
ファイル: export.py プロジェクト: a25kk/stv2
 def marshall_data(self, obj):
     from Products.Marshall.registry import getComponent
     marshaller = getComponent('primary_field')
     return self.marshall(obj, marshaller)
コード例 #31
0
ファイル: exporting.py プロジェクト: kroman0/products
 def __init__(self, context):
     self.context = context
     self.marshaller = getComponent('atxml')
コード例 #32
0
 def marshall_data(self, obj):
     from Products.Marshall.registry import getComponent
     marshaller = getComponent('primary_field')
     return self.marshall(obj, marshaller)
コード例 #33
0
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("""&lt;tr&gt; \r\n          &lt;td width="100%" colspan="3" valign="top" class="TeaserBoxHeaderEEA30sec" align="center"&gt; \r\n            &lt;p class="head0w"&gt;(.*)&lt;/p&gt;\r\n          &lt;/td&gt;\r\n        &lt;/tr&gt;\r\n        """)
            TITLE_TO_REMOVE = re.compile("""&lt;tr&gt; \r\n          &lt;td width="100%" colspan="3" valign="top" class="TeaserBoxHeaderEEA30sec" align="center"&gt; \r\n            &lt;p class="head0w"&gt;.*&lt;/p&gt;\r\n          &lt;/td&gt;\r\n        &lt;/tr&gt;\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('&lt;br/&gt;', '&lt;br /&gt;')
                # 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")
コード例 #34
0
 def marshall_metadata(self, obj):
     from Products.Marshall.registry import getComponent
     marshaller = getComponent('atxml')
     return self.marshall(obj, marshaller)
コード例 #35
0
 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')
コード例 #36
0
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(
                """&lt;tr&gt; \r\n          &lt;td width="100%" colspan="3" valign="top" class="TeaserBoxHeaderEEA30sec" align="center"&gt; \r\n            &lt;p class="head0w"&gt;(.*)&lt;/p&gt;\r\n          &lt;/td&gt;\r\n        &lt;/tr&gt;\r\n        """
            )
            TITLE_TO_REMOVE = re.compile(
                """&lt;tr&gt; \r\n          &lt;td width="100%" colspan="3" valign="top" class="TeaserBoxHeaderEEA30sec" align="center"&gt; \r\n            &lt;p class="head0w"&gt;.*&lt;/p&gt;\r\n          &lt;/td&gt;\r\n        &lt;/tr&gt;\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('&lt;br/&gt;', '&lt;br /&gt;')
                # 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")
コード例 #37
0
ファイル: export.py プロジェクト: a25kk/stv2
 def marshall_metadata(self, obj):
     from Products.Marshall.registry import getComponent
     marshaller = getComponent('atxml')
     return self.marshall(obj, marshaller)