• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Python utils.getHTMLSerializer函数代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了Python中repoze.xmliter.utils.getHTMLSerializer函数的典型用法代码示例。如果您正苦于以下问题:Python getHTMLSerializer函数的具体用法?Python getHTMLSerializer怎么用?Python getHTMLSerializer使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。



在下文中一共展示了getHTMLSerializer函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Python代码示例。

示例1: cook_layout

def cook_layout(layout, ajax):
    """Return main_template compatible layout"""
    # Fix XHTML layouts with CR[+LF] line endings
    layout = re.sub('\r', '\n', re.sub('\r\n', '\n', layout))

    # Parse layout
    if isinstance(layout, unicode):
        result = getHTMLSerializer([layout.encode('utf-8')], encoding='utf-8')
    else:
        result = getHTMLSerializer([layout], encoding='utf-8')

    # Fix XHTML layouts with inline js (etree.tostring breaks all <![CDATA[)
    if '<![CDATA[' in layout:
        result.serializer = html.tostring

    # Wrap all panels with a metal:fill-slot -tag:
    all_slots = []
    for layoutPanelNode in slotsXPath(result.tree):
        data_slots = layoutPanelNode.attrib['data-slots']
        all_slots += wrap_append_prepend_slots(layoutPanelNode, data_slots)
        del layoutPanelNode.attrib['data-slots']

    # When no slots are explicitly defined, try to inject the very default
    # slots
    if len(all_slots) == 0:
        for node in result.tree.xpath('//*[@data-panel="content"]'):
            wrap_append_prepend_slots(
                node, 'content > body header main * content-core')

    # Append implicit slots
    head = result.tree.getroot().find('head')
    if not ajax and head is not None:
        for name in ['top_slot', 'head_slot',
                     'style_slot', 'javascript_head_slot']:
            slot = etree.Element('{%s}%s' % (NSMAP['metal'], name),
                                 nsmap=NSMAP)
            slot.attrib['define-slot'] = name
            head.append(slot)

    template = """\
<metal:page define-macro="master"
            tal:define="portal_state context/@@plone_portal_state;
                        context_state context/@@plone_context_state;
                        plone_view context/@@plone;
                        plone_layout context/@@plone_layout | nothing;
                        lang portal_state/language;
                        view nocall: view | nocall: plone_view;
                        dummy python:plone_view.mark_view(view);
                        portal_url portal_state/portal_url;
                        checkPermission nocall: context/portal_membership/checkPermission;
                        site_properties nocall: context/portal_properties/site_properties;
                        ajax_include_head request/ajax_include_head | nothing;
                        ajax_load request/ajax_load | python: False;
                        toolbar_class python:request.cookies.get('plone-toolbar', 'plone-toolbar-left pat-toolbar');
                        dummy python:request.RESPONSE.setHeader('X-UA-Compatible', 'IE=edge,chrome=1');">
%s
</metal:page>"""
    metal = 'xmlns:metal="http://namespaces.zope.org/metal"'
    return (template % ''.join(result)).replace(metal, '')
开发者ID:amitsaroj001,项目名称:plone.app.mosaic,代码行数:59,代码来源:main_template.py


示例2: transformIterable

    def transformIterable(self, result, encoding):

        try:
            parser = SnippetParser()
        except AttributeError:
            return result

        if self.request['PATH_INFO'].endswith('edit'):
            return result

        contentType = self.request.response.getHeader('Content-Type')
        if contentType is None or not contentType.startswith('text/html'):
            return None

        ce = self.request.response.getHeader('Content-Encoding')
        if ce and ce in ('zip', 'deflate', 'compress'):
            return None
        try:
            if result == ['']:
                return None

            result = getHTMLSerializer(result, pretty_print=False)
        except (TypeError):
            return None

        return [ parser.parsePage(r) for r in result ]
开发者ID:hellfish2,项目名称:snippets,代码行数:26,代码来源:transform.py


示例3: cook_layout

def cook_layout(layout):
    """Return main_template compatible layout"""
    result = getHTMLSerializer(layout, encoding='utf-8')
    nsmap = {'metal': 'http://namespaces.zope.org/metal'}

    # wrap all panels with a metal:fill-slot -tag
    for layoutPanelNode in panelXPath(result.tree):
        panelId = layoutPanelNode.attrib['data-panel']
        slot = etree.Element('{%s}%s' % (nsmap['metal'], panelId), nsmap=nsmap)
        slot.attrib['define-slot'] = panelId
        slot_parent = layoutPanelNode.getparent()
        slot_parent_index = slot_parent.index(layoutPanelNode)
        slot.append(layoutPanelNode)
        slot_parent.insert(slot_parent_index, slot)

    root = result.tree.getroot()
    root.attrib['tal:define'] = """\
portal_state python:context.restrictedTraverse('@@plone_portal_state');
context_state python:context.restrictedTraverse('@@plone_context_state');
plone_view python:context.restrictedTraverse('@@plone');
lang portal_state/language;
view nocall:view | nocall: plone_view;
dummy python: plone_view.mark_view(view);
portal_url portal_state/portal_url;
checkPermission nocall: context/portal_membership/checkPermission;
site_properties nocall:context/portal_properties/site_properties;
ajax_load request/ajax_load | nothing;
ajax_include_head request/ajax_include_head | nothing;
dummy python:request.RESPONSE.setHeader('X-UA-Compatible', 'IE=edge,chrome=1');
dummy python:options.update({'state': options.get('state', request.get('controller_state'))});
"""

    template = '<metal:page define-macro="master">\n%s\n</metal:page>'
    metal = 'xmlns:metal="http://namespaces.zope.org/metal"'
    return (template % ''.join(result)).replace(metal, '')
开发者ID:pemzurigo,项目名称:plone.app.mosaic,代码行数:35,代码来源:main_template.py


示例4: parseTree

    def parseTree(self, result, encoding):
        # if it's a redirect, the result shall not be transformed
        request = getRequest()
        if request.response.status in (301, 302):
            return None

        if isinstance(result, XMLSerializer):
            return result

        # hhmmm, this is kind of taken right out of plone.app.theming
        # maybe this logic(parsing dom) should be someone central?
        contentType = self.request.response.getHeader('Content-Type')
        if contentType is None or not contentType.startswith('text/html'):
            return None

        contentEncoding = self.request.response.getHeader('Content-Encoding')
        if contentEncoding and contentEncoding in ('zip', 'deflate',
                                                   'compress',):
            return None

        try:
            result = getHTMLSerializer(
                result, pretty_print=False, encoding=encoding)
            # We are going to force html output here always as XHTML
            # output does odd character encodings
            result.serializer = html.tostring
            return result
        except (TypeError, etree.ParseError):
            # XXX handle something special?
            LOGGER.warn('error parsing dom, failure to add csrf '
                        'token to response for url %s' % self.request.URL)
            return None
开发者ID:FHNW,项目名称:plone.protect,代码行数:32,代码来源:auto.py


示例5: render

    def render(self):
        # Render fields by iterating over the form field tiles, rendering
        # each one, and replacing the tile with the result.
        layout = ILayoutAware(self.context).content
        layoutTree = getHTMLSerializer(layout,
            pretty_print=True, encoding='utf8')
        
        for tileId, tile in self.context.field_tiles(layoutTree.tree):
            # XXX need to include the full Plone view of the field
            widget = self.widgets[tile.id]
            widgetRenderer = getMultiAdapter((widget, self.request), name=u'ploneform-render-widget')
            widgetHtml = widgetRenderer()
            tileTree = html.fromstring(widgetHtml).getroottree()
            tileTarget = xpath1("//*[@id='%s']" % tileId, layoutTree.tree)
            
            if tileTarget is None:
                continue
            
            # clear children, but keep attributes
            oldAttrib = dict(tileTarget.attrib)
            tileTarget.clear()
            tileTarget.attrib.update(oldAttrib)

            # insert tile target with tile body
            tileBody = tileTree.find('body')
            if tileBody is not None:
                tileTarget.text = tileBody.text
                for tileBodyChild in tileBody:
                    tileTarget.append(tileBodyChild)
        
        # TODO:
        # - create form tag
        # - fill in status message
        return str(layoutTree)
开发者ID:davisagli,项目名称:fluegelform,代码行数:34,代码来源:form.py


示例6: transformIterable

    def transformIterable(self, result, encoding):
        if self.request.get('plone.app.blocks.disabled', False):
            return None

        content_type = self.request.response.getHeader('Content-Type')
        if content_type is None or not content_type.startswith('text/html'):
            return None

        contentEncoding = self.request.response.getHeader('Content-Encoding')
        if contentEncoding and contentEncoding in ('zip', 'deflate',
                                                   'compress',):
            return None

        try:
            # Fix layouts with CR[+LF] line endings not to lose their heads
            # (this has been seen with downloaded themes with CR[+LF] endings)
            iterable = [re.sub('&#13;', '\n', re.sub('&#13;\n', '\n', item))
                        for item in result if item]
            result = getHTMLSerializer(
                iterable, pretty_print=self.pretty_print, encoding=encoding)
            # Fix XHTML layouts with where etree.tostring breaks <![CDATA[
            if any(['<![CDATA[' in item for item in iterable]):
                result.serializer = html.tostring
            self.request['plone.app.blocks.enabled'] = True
            return result
        except (AttributeError, TypeError, etree.ParseError):
            return None
开发者ID:CGTIC,项目名称:Plone_SP,代码行数:27,代码来源:transform.py


示例7: __init__

    def __init__(self, context, request, tile=None):
        self.context = context
        self.request = request
        self.tile = tile

        # Parse layout
        data_layout = (ILayoutAware(self.context).content or DATA_LAYOUT)
        self.storage = getHTMLSerializer([data_layout.encode('utf-8')],
                                         encoding='utf-8')
开发者ID:plone,项目名称:plone.app.blocks,代码行数:9,代码来源:layoutbehavior.py


示例8: _parse

    def _parse(self, result):
        """Create an XMLSerializer from an HTML string, if needed."""
        content_type = self.request.response.getHeader('Content-Type')
        if not content_type or not content_type.startswith('text/html'):
            return

        try:
            return getHTMLSerializer(result)
        except (AttributeError, TypeError, etree.ParseError):
            return
开发者ID:renansfs,项目名称:Plone_SP,代码行数:10,代码来源:transform.py


示例9: test_getHTMLSerializer_doctype_xhtml_serializes_to_xhtml

 def test_getHTMLSerializer_doctype_xhtml_serializes_to_xhtml(self):
     t = utils.getHTMLSerializer(self.create_iterable(preamble='<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">\n', body='<img src="foo.png" />'), pretty_print=True)
     self.failUnless(isinstance(t, serializer.XMLSerializer))
     
     t2 = utils.getXMLSerializer(t)
     self.failUnless(t2 is t)
     
     self.assertEqual(
         '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">\n<html xmlns="http://www.w3.org/1999/xhtml">\n  <head>\n    <meta http-equiv="Content-Type" content="text/html; charset=ASCII" />\n    <title>My homepage</title>\n  </head>\n  <body>Hello, world!<img src="foo.png" /></body>\n</html>\n',
         "".join(t2))
开发者ID:nerdfiles,项目名称:diazo-test0,代码行数:10,代码来源:tests.py


示例10: test_getHTMLSerializer

 def test_getHTMLSerializer(self):
     t = utils.getHTMLSerializer(self.create_iterable(body='<img src="foo.png" />'), pretty_print=True)
     self.failUnless(isinstance(t, serializer.XMLSerializer))
     
     t2 = utils.getXMLSerializer(t)
     self.failUnless(t2 is t)
     
     self.assertEqual(
         '<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">\n<html>\n<head><title>My homepage</title></head>\n<body>Hello, world!<img src="foo.png">\n</body>\n</html>\n',
         "".join(t2))
开发者ID:nerdfiles,项目名称:diazo-test0,代码行数:10,代码来源:tests.py


示例11: parseTree

    def parseTree(self, result):
        contentType = self.request.response.getHeader("Content-Type")
        if contentType is None or not contentType.startswith("text/html"):
            return None

        contentEncoding = self.request.response.getHeader("Content-Encoding")
        if contentEncoding and contentEncoding in ("zip", "deflate", "compress"):
            return None

        try:
            return getHTMLSerializer(result, pretty_print=False)
        except (TypeError, etree.ParseError):
            return None
开发者ID:collective,项目名称:collective.bumblebee,代码行数:13,代码来源:transform.py


示例12: parseTree

    def parseTree(self, result):
        contentType = self.request.response.getHeader('Content-Type')
        if contentType is None or not contentType.startswith('text/html'):
            return None

        contentEncoding = self.request.response.getHeader('Content-Encoding')
        if contentEncoding and contentEncoding in ('zip', 'deflate', 'compress',):
            return None

        try:
            return getHTMLSerializer(result, pretty_print=False)
        except (TypeError, etree.ParseError):
            return None
开发者ID:thet,项目名称:plone.app.theming,代码行数:13,代码来源:transform.py


示例13: transform

def transform(doc, rules, extras={}, throw_errors=False):
    if isinstance(doc, basestring):
        doc = getHTMLSerializer([doc])

    root = doc.tree.getroot()

    for rule in rules:
        try:
            rule(root, extras)
        except:
            if throw_errors:
                raise

    return doc
开发者ID:vangheem,项目名称:Bumblebee,代码行数:14,代码来源:__init__.py


示例14: test_replace_doctype_blank

    def test_replace_doctype_blank(self):
        t = utils.getHTMLSerializer(self.create_iterable(preamble='<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">\n', body='<img src="foo.png" />'), pretty_print=True, doctype="")
        self.failUnless(isinstance(t, serializer.XMLSerializer))

        t2 = utils.getXMLSerializer(t)
        self.failUnless(t2 is t)
        
        self.assertEqual(
            b'<html xmlns="http://www.w3.org/1999/xhtml">\n  <head>\n    <meta http-equiv="Content-Type" content="text/html; charset=ASCII" />\n    <title>My homepage</title>\n  </head>\n  <body>Hello, w&#246;rld!<img src="foo.png" /></body>\n</html>\n',
            b"".join(t2))

        self.assertEqual(
            u'<html xmlns="http://www.w3.org/1999/xhtml">\n  <head>\n    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\n    <title>My homepage</title>\n  </head>\n  <body>Hello, wörld!<img src="foo.png" /></body>\n</html>\n',
            u"".join(t2.serialize(encoding=unicode)))
开发者ID:CGTIC,项目名称:Plone_SP,代码行数:14,代码来源:tests.py


示例15: test_xsl

 def test_xsl(self):
     t = utils.getHTMLSerializer(self.create_iterable(body='<br>'))
     transform = lxml.etree.XSLT(lxml.etree.XML(b'''
         <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
             <xsl:output method="xml" indent="no" omit-xml-declaration="yes"
                 media-type="text/html" encoding="UTF-8"
                 doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN"
                 doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
                 />
             <xsl:template match="@*|node()">
               <xsl:copy>
                 <xsl:apply-templates select="@*|node()"/>
               </xsl:copy>
             </xsl:template>
         </xsl:stylesheet>
         '''))
     t.tree = transform(t.tree)
     self.failUnless('<br />' in str(t))
开发者ID:CGTIC,项目名称:Plone_SP,代码行数:18,代码来源:tests.py


示例16: transformIterable

    def transformIterable(self, result, encoding):
        if self.request.get("plone.app.blocks.disabled", False):
            return None

        content_type = self.request.response.getHeader("Content-Type")
        if content_type is None or not content_type.startswith("text/html"):
            return None

        contentEncoding = self.request.response.getHeader("Content-Encoding")
        if contentEncoding and contentEncoding in ("zip", "deflate", "compress"):
            return None

        try:
            result = getHTMLSerializer(result, pretty_print=self.pretty_print, encoding=encoding)
            self.request["plone.app.blocks.enabled"] = True
            return result
        except (TypeError, etree.ParseError):
            return None
开发者ID:hatchddigital,项目名称:plone.app.blocks,代码行数:18,代码来源:transform.py


示例17: protect

def protect(raw):
    if isinstance(raw, six.text_type):
        raw = raw.encode('utf-8')
    parser = getHTMLSerializer(
        [raw], pretty_print=False, encoding='utf-8')
    parser.serializer = html.tostring

    root = parser.tree.getroot()
    token = createToken()

    for form in root.cssselect('form'):
        authenticator = form.cssselect('[name="_authenticator"]')
        if len(authenticator) == 0:
            authenticator = etree.Element("input")
            authenticator.attrib['name'] = '_authenticator'
            authenticator.attrib['type'] = 'hidden'
            authenticator.attrib['value'] = token
            form.append(authenticator)
    return parser.serialize().decode('utf-8')
开发者ID:plone,项目名称:plone.app.standardtiles,代码行数:19,代码来源:discussion.py


示例18: parseTree

    def parseTree(self, result):
        # hhmmm, this is kind of taken right out of plone.app.theming
        # maybe this logic(parsing dom) should be someone central?
        contentType = self.request.response.getHeader('Content-Type')
        if contentType is None or not contentType.startswith('text/html'):
            return None

        contentEncoding = self.request.response.getHeader('Content-Encoding')
        if contentEncoding and contentEncoding in ('zip', 'deflate',
                                                   'compress',):
            return None

        try:
            return getHTMLSerializer(result, pretty_print=False)
        except (TypeError, etree.ParseError):
            # XXX handle something special?
            LOGGER.warn('error parsing dom, failure to add csrf '
                        'token to response for url %s' % self.request.URL)
            return None
开发者ID:RedTurtle,项目名称:plone.protect,代码行数:19,代码来源:auto.py


示例19: transformIterable

    def transformIterable(self, result, encoding):
        if self.request.get('plone.app.blocks.disabled', False):
            return None

        content_type = self.request.response.getHeader('Content-Type')
        if content_type is None or not content_type.startswith('text/html'):
            return None

        contentEncoding = self.request.response.getHeader('Content-Encoding')
        if contentEncoding and contentEncoding in ('zip', 'deflate',
                                                   'compress',):
            return None

        try:
            result = getHTMLSerializer(result, pretty_print=True,
                                       encoding=encoding)
            self.request['plone.app.blocks.enabled'] = True
            return result
        except (TypeError, etree.ParseError):
            return None
开发者ID:collective,项目名称:groundwire.tiles,代码行数:20,代码来源:transform.py


示例20: __call__

 def __call__(self, environ, start_response):
     request = Request(environ)
     response = request.get_response(self.app)
     
     app_iter = response(environ, start_response)
     
     if self.should_ignore(request) or not self.should_transform(response):
         return app_iter
     
     # Set up parameters
     
     params = {}
     for key, value in self.environ_param_map.items():
         if key in environ:
             params[value] = quote_param(environ[key])
     for key, value in self.params.items():
         params[key] = quote_param(value)
     
     # Apply the transformation
     app_iter = getHTMLSerializer(app_iter)
     tree = self.transform(app_iter.tree, **params)
     
     # Set content type and choose XHTML or HTML serializer
     serializer = html.tostring
     response.headers['Content-Type'] = 'text/html'
     
     if tree.docinfo.doctype and 'XHTML' in tree.docinfo.doctype:
         serializer = etree.tostring
         response.headers['Content-Type'] = 'application/xhtml+xml'
     
     app_iter = XMLSerializer(tree, serializer=serializer)
     
     # Calculate the content length - we still return the parsed tree
     # so that other middleware could avoid having to re-parse, even if
     # we take a hit on serialising here
     if self.update_content_length and 'Content-Length' in response.headers:
         response.headers['Content-Length'] = str(len(str(app_iter)))
     
     # Return a repoze.xmliter XMLSerializer, which helps avoid re-parsing
     # the content tree in later middleware stages
     return app_iter
开发者ID:nerdfiles,项目名称:diazo-test0,代码行数:41,代码来源:wsgi.py



注:本文中的repoze.xmliter.utils.getHTMLSerializer函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Python repr.r函数代码示例发布时间:2022-05-26
下一篇:
Python testing.registerDummyWorkflow函数代码示例发布时间:2022-05-26
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap