Ejemplo n.º 1
0
    def test_attr_quoting(self):
        from Products.GenericSetup.utils import PrettyDocument
        original = 'baz &nbsp;<bar>&"\''
        expected = ('<?xml version="1.0"?>\n'
                    '<doc foo="baz &amp;nbsp;&lt;bar&gt;&amp;&quot;\'"/>\n')

        doc = PrettyDocument()
        node = doc.createElement('doc')
        node.setAttribute('foo', original)
        doc.appendChild(node)
        self.assertEqual(doc.toprettyxml(' '), expected)
        # Reparse
        e = _getDocumentElement(expected)
        self.assertEqual(e.getAttribute('foo'), original)
Ejemplo n.º 2
0
    def test__initMarkers(self):
        from Products.GenericSetup.utils import PrettyDocument
        from Products.GenericSetup.testing import IDummyMarker
        helpers = self._makeOne()
        node = _getDocumentElement(_NORMAL_MARKER_EXPORT)
        helpers._initMarkers(node)
        self.failUnless(IDummyMarker.providedBy(helpers.context))

        doc = helpers._doc = PrettyDocument()
        node = doc.createElement('dummy')
        node.appendChild(helpers._extractMarkers())
        doc.appendChild(node)

        self.assertEqual(doc.toprettyxml(' '), _NORMAL_MARKER_EXPORT)
Ejemplo n.º 3
0
    def test_text_quoting(self):
        original = 'goo &nbsp;<hmm>&"\''
        expected = ('<?xml version="1.0"?>\n'
                    '<doc>goo &amp;nbsp;&lt;hmm&gt;&amp;"\'</doc>\n')

        doc = PrettyDocument()
        node = doc.createElement('doc')
        child = doc.createTextNode(original)
        node.appendChild(child)
        doc.appendChild(node)
        self.assertEqual(doc.toprettyxml(' '), expected)
        # Reparse
        e = parseString(expected).documentElement
        self.assertEqual(e.childNodes[0].nodeValue, original)
Ejemplo n.º 4
0
    def test__initProperties_normal(self):
        node = parseString(_NORMAL_PROPERTY_EXPORT).documentElement
        self.helpers._initProperties(node)
        self.assertEqual(type(self.helpers.context.foo_int), int)
        self.assertEqual(type(self.helpers.context.foo_string), str)
        self.assertEqual(type(self.helpers.context.foo_tokens), tuple)
        self.assertEqual(type(self.helpers.context.foo_tokens[0]), str)

        doc = self.helpers._doc = PrettyDocument()
        node = doc.createElement('dummy')
        node.appendChild(self.helpers._extractProperties())
        doc.appendChild(node)

        self.assertEqual(doc.toprettyxml(' '), _NORMAL_PROPERTY_EXPORT)
Ejemplo n.º 5
0
def exportCatalogTool(context):
    """ Export catalog tool.
    """
    site = context.getSite()

    ctool = getToolByName(site, 'portal_catalog', None)
    if ctool is None:
        return 'Catalog tool: Nothing to export.'

    exporter = INodeExporter(ctool)
    if exporter is None:
        return 'Catalog tool: Export adapter misssing.'

    doc = PrettyDocument()
    doc.appendChild(exporter.exportNode(doc))
    context.writeDataFile(_FILENAME, doc.toprettyxml(' '), 'text/xml')
    return 'Catalog tool exported.'
Ejemplo n.º 6
0
def exportMailHost(context):
    """ Export mailhost settings as an XML file.
    """
    site = context.getSite()

    mailhost = getToolByName(site, 'MailHost', None)
    if mailhost is None:
        return 'Mailhost: Nothing to export.'

    exporter = INodeExporter(mailhost)
    if exporter is None:
        return 'Mailhost: Export adapter misssing.'

    doc = PrettyDocument()
    doc.appendChild(exporter.exportNode(doc))
    context.writeDataFile(_FILENAME, doc.toprettyxml(' '), 'text/xml')
    return 'Mailhost settings exported.'
Ejemplo n.º 7
0
def exportActionProviders(context):
    """ Export actions tool.
    """
    site = context.getSite()

    atool = getToolByName(site, 'portal_actions', None)
    if atool is None:
        return 'Actions tool: Nothing to export.'

    exporter = INodeExporter(atool)
    if exporter is None:
        return 'Actions tool: Export adapter misssing.'

    doc = PrettyDocument()
    doc.appendChild(exporter.exportNode(doc))
    context.writeDataFile(_FILENAME, doc.toprettyxml(' '), 'text/xml')
    return 'Actions tool exported.'
Ejemplo n.º 8
0
    def test__initProperties_normal(self):
        from Products.GenericSetup.utils import PrettyDocument
        helpers = self._makeOne()
        obj = self._getReal(helpers.context)
        node = _getDocumentElement(_NORMAL_PROPERTY_EXPORT)
        helpers._initProperties(node)
        self.assertEqual(type(obj.foo_int), int)
        self.assertEqual(type(obj.foo_string), str)
        self.assertEqual(type(obj.foo_tokens), tuple)
        self.assertEqual(type(obj.foo_tokens[0]), str)

        doc = helpers._doc = PrettyDocument()
        node = doc.createElement('dummy')
        node.appendChild(helpers._extractProperties())
        doc.appendChild(node)

        self.assertEqual(doc.toprettyxml(' '), _NORMAL_PROPERTY_EXPORT)
Ejemplo n.º 9
0
    def test__extractProperties_normal(self):
        from Products.GenericSetup.utils import PrettyDocument
        helpers = self._makeOne()
        obj = self._getReal(helpers.context)
        self._populate(obj)
        doc = helpers._doc = PrettyDocument()
        node = doc.createElement('dummy')

        # The extraction process wants to decode text properties
        # to unicode using the default ZPublisher encoding, which
        # defaults to iso-8859-15. We force UTF-8 here because we
        # forced our properties to be UTF-8 encoded.
        helpers._encoding = 'utf-8'
        node.appendChild(helpers._extractProperties())
        doc.appendChild(node)

        self.assertEqual(doc.toprettyxml(' '), _NORMAL_PROPERTY_EXPORT)
Ejemplo n.º 10
0
def exportCookieCrumbler(context):
    """ Export cookie crumbler settings as an XML file.
    """
    site = context.getSite()

    cctool = getToolByName(site, 'cookie_authentication', None)
    if cctool is None:
        return 'Cookie crumbler: Nothing to export.'

    exporter = INodeExporter(cctool)
    if exporter is None:
        return 'Cookie crumbler: Export adapter misssing.'

    doc = PrettyDocument()
    doc.appendChild(exporter.exportNode(doc))
    context.writeDataFile(_FILENAME, doc.toprettyxml(' '), 'text/xml')
    return 'Cookie crumbler settings exported.'
Ejemplo n.º 11
0
def get_portlet_blacklist_xml(context, prefix):
    return_value = False

    doc = PrettyDocument()
    node = doc.createElement('portlets')

    key = '/'.join(context.getPhysicalPath())
    if key.startswith(prefix):
        key = key[len(prefix):]
    key = key or '/'

    for manager_name, manager in getUtilitiesFor(IPortletManager):
        assignable = queryMultiAdapter((context, manager),
                                       ILocalPortletAssignmentManager)
        if assignable is None:
            continue

        for category in (USER_CATEGORY, GROUP_CATEGORY, CONTENT_TYPE_CATEGORY,
                         CONTEXT_CATEGORY):  # noqa
            child = doc.createElement('blacklist')
            child.setAttribute('manager', manager_name)
            child.setAttribute('category', category)
            child.setAttribute('location', key)

            status = assignable.getBlacklistStatus(category)
            if status:
                child.setAttribute('status', u'block')
                return_value = True
            elif not status:
                child.setAttribute('status', u'show')
                return_value = True
            else:
                child.setAttribute('status', u'acquire')

            node.appendChild(child)

    doc.appendChild(node)
    xml = doc.toprettyxml(' ')
    doc.unlink()

    if return_value:
        yield xml
Ejemplo n.º 12
0
def get_portlet_assignment_xml(context, prefix):
    doc = PrettyDocument()
    node = doc.createElement('portlets')
    for manager_name, manager in getUtilitiesFor(IPortletManager):
        mapping = queryMultiAdapter((context, manager),
                                    IPortletAssignmentMapping)
        if mapping is None:
            continue

        mapping = mapping.__of__(context)

        key = '/'.join(context.getPhysicalPath())
        if key.startswith(prefix):
            key = key[len(prefix):]
        key = key or '/'

        extract_mapping(doc, node, manager_name, CONTEXT_CATEGORY, key,
                        mapping)

    doc.appendChild(node)
    xml = patch_portlets_xml(doc.toprettyxml(' '), prefix)
    doc.unlink()
    return xml
Ejemplo n.º 13
0
 def test_exportNode_special(self):
     self._populate_special(self._obj)
     node = INodeExporter(self._obj).exportNode(PrettyDocument())
     self.assertEqual(node.toprettyxml(' '),
                      _CATALOG_XML % (_VOCABULARY_XML, _TEXT_XML))