tags.py
author Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
Tue, 31 Jul 2012 10:12:06 +0200
branchstable
changeset 8497 7f71e366cb5e
parent 6140 65a619eb31c4
child 10907 9ae707db5265
permissions -rw-r--r--
[testlib] consider rset for template / view selection (closes #2447183) The original code did something like: kwargs['rset'] = rset viewfunc = lambda **k: viewsreg.main_template(req, template, **kwargs) kwargs.pop('rset') return self._test_view(viewfunc, view, template, kwargs) meaning that by the time ``viewfunc`` (i.e. the lambda function) is called, ``rset`` was popped from ``kwargs`` and had no chance to be passed to ``main_template``.

# copyright 2003-2010 LOGILAB S.A. (Paris, FRANCE), all rights reserved.
# contact http://www.logilab.fr/ -- mailto:contact@logilab.fr
#
# This file is part of CubicWeb.
#
# CubicWeb is free software: you can redistribute it and/or modify it under the
# terms of the GNU Lesser General Public License as published by the Free
# Software Foundation, either version 2.1 of the License, or (at your option)
# any later version.
#
# CubicWeb is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public License for more
# details.
#
# You should have received a copy of the GNU Lesser General Public License along
# with CubicWeb.  If not, see <http://www.gnu.org/licenses/>.
"""helper classes to generate simple (X)HTML tags"""

__docformat__ = "restructuredtext en"

from cubicweb.uilib import simple_sgml_tag, sgml_attributes

class tag(object):
    def __init__(self, name, escapecontent=True):
        self.name = name
        self.escapecontent = escapecontent

    def __call__(self, __content=None, **attrs):
        attrs.setdefault('escapecontent', self.escapecontent)
        return simple_sgml_tag(self.name, __content, **attrs)

button = tag('button')
input = tag('input')
textarea = tag('textarea')
a = tag('a')
span = tag('span')
div = tag('div', False)
img = tag('img')
label = tag('label')
option = tag('option')
h1 = tag('h1')
h2 = tag('h2')
h3 = tag('h3')
h4 = tag('h4')
h5 = tag('h5')
tr = tag('tr')
th = tag('th')
td = tag('td')
iframe = tag('iframe')

def select(name, id=None, multiple=False, options=[], **attrs):
    if multiple:
        attrs['multiple'] = 'multiple'
    if id:
        attrs['id'] = id
    attrs['name'] = name
    html = [u'<select %s>' % sgml_attributes(attrs)]
    html += options
    html.append(u'</select>')
    return u'\n'.join(html)