def render_genshi_tmpl(tmplstr, context, tmplpath=None):
    '''
    Render a Genshi template. A method should be passed in as part of the
    context. If no method is passed in, xml is assumed. Valid methods are:

    .. code-block:

        - xml
        - xhtml
        - html
        - text
        - newtext
        - oldtext

    Note that the ``text`` method will call ``NewTextTemplate``. If ``oldtext``
    is desired, it must be called explicitly
    '''
    method = context.get('method', 'xml')
    if method == 'text' or method == 'newtext':
        from genshi.template import NewTextTemplate
        tmpl = NewTextTemplate(tmplstr)
    elif method == 'oldtext':
        from genshi.template import OldTextTemplate
        tmpl = OldTextTemplate(tmplstr)
    else:
        from genshi.template import MarkupTemplate
        tmpl = MarkupTemplate(tmplstr)

    return tmpl.generate(**context).render(method)
示例#2
0
def render_genshi_tmpl(tmplstr, context, tmplpath=None):
    """
    Render a Genshi template. A method should be passed in as part of the
    context. If no method is passed in, xml is assumed. Valid methods are:

    .. code-block:

        - xml
        - xhtml
        - html
        - text
        - newtext
        - oldtext

    Note that the ``text`` method will call ``NewTextTemplate``. If ``oldtext``
    is desired, it must be called explicitly
    """
    method = context.get("method", "xml")
    if method == "text" or method == "newtext":
        from genshi.template import NewTextTemplate  # pylint: disable=no-name-in-module

        tmpl = NewTextTemplate(tmplstr)
    elif method == "oldtext":
        from genshi.template import OldTextTemplate  # pylint: disable=no-name-in-module

        tmpl = OldTextTemplate(tmplstr)
    else:
        from genshi.template import MarkupTemplate  # pylint: disable=no-name-in-module

        tmpl = MarkupTemplate(tmplstr)

    return tmpl.generate(**context).render(method)
示例#3
0
def render(genshi_data, saltenv='base', sls='', method='xml', **kws):
    '''
  Render a Genshi template. A method should be passed in as part of the
  kwargs. If no method is passed in, xml is assumed. Valid methods are:

  .. code-block:

      - xml
      - xhtml
      - html
      - text
      - newtext
      - oldtext

  Note that the ``text`` method will call ``NewTextTemplate``. If ``oldtext``
  is desired, it must be called explicitly

  :rtype: A Python data structure
  '''
    if not HAS_LIBS:
        raise SaltRenderError('Failed to import genshi template')

    if not isinstance(genshi_data, six.string_types):
        genshi_data = genshi_data.read()

    if genshi_data.startswith('#!'):
        genshi_data = genshi_data[(genshi_data.find('\n') + 1):]
    if not genshi_data.strip():
        return {}

    if method == 'text' or method == 'newtext':
        tmpl = NewTextTemplate(genshi_data)
    elif method == 'oldtext':
        tmpl = OldTextTemplate(genshi_data)
    else:
        tmpl = MarkupTemplate(genshi_data)

    generated = tmpl.generate(salt=__salt__,
                              grains=__grains__,
                              pillar=__pillar__,
                              opts=__opts__,
                              proxy=__proxy__,
                              saltenv=saltenv,
                              sls=sls,
                              **kws)

    return generated.render(method)
示例#4
0
def render(genshi_data, saltenv="base", sls="", method="xml", **kws):
    """
    Render a Genshi template. A method should be passed in as part of the
    kwargs. If no method is passed in, xml is assumed. Valid methods are:

    .. code-block:

        - xml
        - xhtml
        - html
        - text
        - newtext
        - oldtext

    Note that the ``text`` method will call ``NewTextTemplate``. If ``oldtext``
    is desired, it must be called explicitly

    :rtype: A Python data structure
    """
    if not HAS_LIBS:
        return {}

    if not isinstance(genshi_data, str):
        genshi_data = genshi_data.read()

    if genshi_data.startswith("#!"):
        genshi_data = genshi_data[(genshi_data.find("\n") + 1):]
    if not genshi_data.strip():
        return {}

    if method == "text" or method == "newtext":
        tmpl = NewTextTemplate(genshi_data)
    elif method == "oldtext":
        tmpl = OldTextTemplate(genshi_data)
    else:
        tmpl = MarkupTemplate(genshi_data)

    return tmpl.generate(**kws).render(method)
示例#5
0
def render(genshi_data, saltenv='base', sls='', method='xml', **kws):
    '''
    Render a Genshi template. A method should be passed in as part of the
    kwargs. If no method is passed in, xml is assumed. Valid methods are:

    .. code-block:

        - xml
        - xhtml
        - html
        - text
        - newtext
        - oldtext

    Note that the ``text`` method will call ``NewTextTemplate``. If ``oldtext``
    is desired, it must be called explicitly

    :rtype: A Python data structure
    '''
    if not HAS_LIBS:
        return {}

    if not isinstance(genshi_data, string_types):
        genshi_data = genshi_data.read()

    if genshi_data.startswith('#!'):
        genshi_data = genshi_data[(genshi_data.find('\n') + 1):]
    if not genshi_data.strip():
        return {}

    if method == 'text' or method == 'newtext':
        tmpl = NewTextTemplate(genshi_data)
    elif method == 'oldtext':
        tmpl = OldTextTemplate(genshi_data)
    else:
        tmpl = MarkupTemplate(genshi_data)

    return tmpl.generate(**kws).render(method)
示例#6
0
    Note that the ``text`` method will call ``NewTextTemplate``. If ``oldtext``
    is desired, it must be called explicitly

    :rtype: A Python data structure
    '''
  if not HAS_LIBS:
    raise SaltRenderError('Failed to import genshi template')

  if not isinstance(genshi_data, six.string_types):
    genshi_data = genshi_data.read()

  if genshi_data.startswith('#!'):
    genshi_data = genshi_data[(genshi_data.find('\n') + 1):]
  if not genshi_data.strip():
    return {}

  if method == 'text' or method == 'newtext':
    tmpl = NewTextTemplate(genshi_data)
  elif method == 'oldtext':
    tmpl = OldTextTemplate(genshi_data)
  else:
    tmpl = MarkupTemplate(genshi_data)

  generated = tmpl.generate(
    salt=__salt__, grains=__grains__, pillar=__pillar__,
    opts=__opts__, proxy=__proxy__,
    saltenv=saltenv, sls=sls, **kws)

  return generated.render(method)