# HG changeset patch # User Sylvain Thénault # Date 1243528371 -7200 # Node ID d495e9ce936784dfb463eb35ad488ee8d928b16c # Parent 96c0e56cb0cfc5e82d604a6f5b28ab0bc9a60068 basic views for python values (eg without any result set) diff -r 96c0e56cb0cf -r d495e9ce9367 selectors.py --- a/selectors.py Thu May 28 18:32:12 2009 +0200 +++ b/selectors.py Thu May 28 18:32:51 2009 +0200 @@ -40,7 +40,6 @@ :contact: http://www.logilab.fr/ -- mailto:contact@logilab.fr :license: GNU Lesser General Public License, v2.1 - http://www.gnu.org/licenses """ - __docformat__ = "restructuredtext en" import logging diff -r 96c0e56cb0cf -r d495e9ce9367 web/test/unittest_views_pyviews.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/test/unittest_views_pyviews.py Thu May 28 18:32:51 2009 +0200 @@ -0,0 +1,25 @@ +from logilab.common.testlib import unittest_main +from cubicweb.devtools.apptest import EnvBasedTC + +class PyViewsTC(EnvBasedTC): + + def test_pyvaltable(self): + content = self.vreg.view('pyvaltable', self.request(), + pyvalue=[[1, 'a'], [2, 'b']], + headers=['num', 'char']) + self.assertEquals(content.strip(), ''' + + + +
numchar
1a
2b
''') + + def test_pyvallist(self): + content = self.vreg.view('pyvallist', self.request(), + pyvalue=[1, 'a']) + self.assertEquals(content.strip(), '''''') + +if __name__ == '__main__': + unittest_main() diff -r 96c0e56cb0cf -r d495e9ce9367 web/views/pyviews.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/views/pyviews.py Thu May 28 18:32:51 2009 +0200 @@ -0,0 +1,42 @@ +"""Views to display bare python values + +:organization: Logilab +:copyright: 2009 LOGILAB S.A. (Paris, FRANCE), license is LGPL v2. +:contact: http://www.logilab.fr/ -- mailto:contact@logilab.fr +:license: GNU Lesser General Public License, v2.1 - http://www.gnu.org/licenses +""" +__docformat__ = "restructuredtext en" + +from cubicweb.view import View +from cubicweb.selectors import match_kwargs + +class PyValTableView(View): + id = 'pyvaltable' + __select__ = match_kwargs('pyvalue') + + def call(self, pyvalue, headers=None): + if headers is None: + headers = self.req.form.get('headers') + self.w(u'\n') + if headers: + self.w(u'') + for header in headers: + self.w(u'' % header) + self.w(u'\n') + for row in pyvalue: + self.w(u'') + for cell in row: + self.w(u'' % cell) + self.w(u'\n') + self.w(u'
%s
%s
\n') + + +class PyValListView(View): + id = 'pyvallist' + __select__ = match_kwargs('pyvalue') + + def call(self, pyvalue): + self.w(u'\n')