示例#1
0
def ux2_metarenderer_factory(info):
    """
    Use a custom renderer to choose between 'classic' and 'ux2' UI.
    """
    # Don't use metarenderer if we're specifcally already looking for
    # something in karl.ux2.  Also don't use metarender for any of the layouts.
    # We want those to be explicitly chosen from one UI or the other at the
    # point where they are used.
    if info.name.endswith('_layout.pt') or info.package is karl.ux2:
        return renderer_factory(info)

    # Does this template exist in ux2?
    name = info.name
    if ':' in name:
        name = name[name.index(':') + 1:]
    if not pkg_resources.resource_exists('karl.ux2', name):
        # There's not a UX2 version, so just return the same old renderer
        # you would normally use
        return renderer_factory(info)

    # Return a renderer that chooses classic versus ux2 based on cookie
    # in request.
    classic_renderer = renderer_factory(info)
    ux2_renderer = renderer_factory(RendererHelper(
        name, karl.ux2, info.registry))
    def metarenderer(value, system):
        use_ux2 = system['request'].cookies.get('ux2') == 'true'
        if use_ux2:
            return ux2_renderer(value, system)
        return classic_renderer(value, system)
    return metarenderer
示例#2
0
文件: renderers.py 项目: lslaz1/karl
    def __call__(self, info):
        # Does this template exist
        name = info.name
        if ':' in name:
            name = name[name.index(':') + 1:]
        for package in reversed(self.packages):
            if pkg_resources.resource_exists(package.__name__, name):
                return renderer_factory(
                    RendererHelper(name, package, info.registry))

        # default to current package
        return renderer_factory(info)
示例#3
0
文件: renderers.py 项目: lslaz1/karl
    def __call__(self, info):
        # Does this template exist
        name = info.name
        if ':' in name:
            name = name[name.index(':') + 1:]
        for package in reversed(self.packages):
            if pkg_resources.resource_exists(package.__name__, name):
                return renderer_factory(RendererHelper(
                    name, package, info.registry))

        # default to current package
        return renderer_factory(info)
示例#4
0
def ux2_metarenderer_factory(info):
    """
    Use a custom renderer to choose between 'classic' and 'ux2' UI.
    """
    # Don't use metarenderer if we're specifcally already looking for
    # something in karl.ux2.  Also don't use metarender for any of the layouts.
    # We want those to be explicitly chosen from one UI or the other at the
    # point where they are used.
    if info.name.endswith('_layout.pt') or info.package is karl.ux2:
        return renderer_factory(info)

    # Does this template exist in ux2?
    name = info.name
    if ':' in name:
        name = name[name.index(':') + 1:]
    ux2_package = karl.ux2
    name = ux1_to_ux2_templates.get(name, name)
    if info.package.__name__.startswith('osi.'):
        import osi.ux2 as ux2_package
        if not pkg_resources.resource_exists(ux2_package.__name__, name):
            # Let karl.ux2 templates be used if not in osi.ux2
            ux2_package = karl.ux2
    if not pkg_resources.resource_exists(ux2_package.__name__, name):
        # There's not a UX2 version, so just return the same old renderer
        # you would normally use
        return renderer_factory(info)

    # Return a renderer that chooses classic versus ux2 based on cookie
    # in request.
    classic_renderer = renderer_factory(info)
    ux2_renderer = renderer_factory(
        RendererHelper(name, ux2_package, info.registry))

    def metarenderer(value, system):
        use_ux2 = system['request'].cookies.get('ux2_kachoo') == 'true'
        if use_ux2:
            if 'api' in value:
                del value['api']
            return ux2_renderer(value, system)
        return classic_renderer(value, system)

    return metarenderer
示例#5
0
文件: form.py 项目: lslaz1/karl
def render_form_to_response(template_path, schema, fieldvalues,
                            form_id='contentform',
                            rendering_method='html', **kw):
    """ Render a ``chameleon.zpt`` form template at the
    package-relative path (may also be absolute) using the kwargs in
    ``*kw`` as top-level names, the schema, and the fieldvalues, and
    return a Webob response."""
    renderer = renderer_factory(template_path)
    body = renderer(kw, {})
    if body:
        rendered = schema.render(body, fieldvalues, form_id, rendering_method)
    else:
        # for unit testing
        rendered = ''
        renderer.fieldvalues = fieldvalues
        renderer.form_body = body
        renderer.form_id = form_id
        renderer.rendering_method = rendering_method
    return Response(rendered)
示例#6
0
文件: form.py 项目: lslaz1/karl
def render_form_to_response(template_path,
                            schema,
                            fieldvalues,
                            form_id='contentform',
                            rendering_method='html',
                            **kw):
    """ Render a ``chameleon.zpt`` form template at the
    package-relative path (may also be absolute) using the kwargs in
    ``*kw`` as top-level names, the schema, and the fieldvalues, and
    return a Webob response."""
    renderer = renderer_factory(template_path)
    body = renderer(kw, {})
    if body:
        rendered = schema.render(body, fieldvalues, form_id, rendering_method)
    else:
        # for unit testing
        rendered = ''
        renderer.fieldvalues = fieldvalues
        renderer.form_body = body
        renderer.form_id = form_id
        renderer.rendering_method = rendering_method
    return Response(rendered)
示例#7
0
    def _callFUT(self, info):
        from pyramid.chameleon_zpt import renderer_factory

        return renderer_factory(info)
示例#8
0
 def _callFUT(self, info):
     from pyramid.chameleon_zpt import renderer_factory
     return renderer_factory(info)