[repoapi] fold ClientConnection into Connection
Connection replaces ClientConnection everywhere.
Some notes:
* testlib: .client_cnx and .repo_cnx become aliases of .cnx (we might
not want to tell people to update their tests again for just no real
benefit, so we'll live with these aliases for a while)
* entity.as_rset must not be cached because we risk caching result
sets having a Connection object as .req (helps unittest_breadcrumbs)
* entity._cw_dont_cache_attributes loses its repo/request special
paths and only keeps its storage/bfss user (this helps
unittest_wfobjs)
* moreover, entity.cw_instantiate and .cw_set stop overriding the
attributes cache *after* the before_*_entity hooks have run, because
there is no need to (it is now actually harmful to do it and
unittest_hooks.test_html_tidy* tests remain green because of this)
* rset._build_entity sticks its .req onto the entity just fetched from
the cache, because otherwise it might carry a _cw that is a
Connection object where a Request is expected (helps
unittest_views_actions)
* we get overall better cache usages (entity caches were split over
Request + ClientConnection and Connection), hence the changes
unittest_entity and unittest_wfobjs
* void the ecache when providing the cnx to a request object
Having the entity cache pre-filled when we bind it to the request
object hurts because these entities are bound to Connection objects,
that lack e.g. `.form` or `.add_js` and crash the views subsystem.
Thus, the unittest_testlib.test_error_raised test will are kept
green.
Closes #3837233
# pylint: disable=W0622,C0103
# copyright 2003-2014 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/>.
"""cubicweb global packaging information for the cubicweb knowledge management
software
"""
modname = distname = "cubicweb"
numversion = (3, 20, 6)
version = '.'.join(str(num) for num in numversion)
description = "a repository of entities / relations for knowledge management"
author = "Logilab"
author_email = "contact@logilab.fr"
web = 'http://www.cubicweb.org'
license = 'LGPL'
classifiers = [
'Environment :: Web Environment',
'Framework :: CubicWeb',
'Programming Language :: Python',
'Programming Language :: JavaScript',
]
__depends__ = {
'logilab-common': '>= 0.63.1',
'logilab-mtconverter': '>= 0.8.0',
'rql': '>= 0.31.2',
'yams': '>= 0.40.0',
#gettext # for xgettext, msgcat, etc...
# web dependencies
'lxml': '',
# XXX graphviz
# server dependencies
'logilab-database': '>= 1.13.0',
'passlib': '',
'Markdown': ''
}
__recommends__ = {
'docutils': '>= 0.6',
'Pyro': '>= 3.9.1, < 4.0.0',
'Pillow': '', # for captcha
'pycrypto': '', # for crypto extensions
'fyzz': '>= 0.1.0', # for sparql
'vobject': '>= 0.6.0', # for ical view
'rdflib': None, #
'pyzmq': None,
'Twisted': '',
#'Products.FCKeditor':'',
#'SimpleTAL':'>= 4.1.6',
}
import sys
from os import listdir, environ
from os.path import join, isdir
import glob
scripts = [s for s in glob.glob(join('bin', 'cubicweb-*'))
if not s.endswith('.bat')]
include_dirs = [join('test', 'data'),
join('server', 'test', 'data'),
join('hooks', 'test', 'data'),
join('web', 'test', 'data'),
join('devtools', 'data'),
join('devtools', 'test', 'data'),
'schemas', 'skeleton']
_server_migration_dir = join('misc', 'migration')
_data_dir = join('web', 'data')
_wdoc_dir = join('web', 'wdoc')
_wdocimages_dir = join(_wdoc_dir, 'images')
_views_dir = join('web', 'views')
_i18n_dir = 'i18n'
_pyversion = '.'.join(str(num) for num in sys.version_info[0:2])
if '--home' in sys.argv:
# --home install
pydir = 'python' + _pyversion
else:
pydir = join('python' + _pyversion, 'site-packages')
# data files that shall be copied into the main package directory
package_data = {
'cubicweb.web.views':['*.pt'],
}
try:
# data files that shall be copied outside the main package directory
data_files = [
# server data
[join('share', 'cubicweb', 'schemas'),
glob.glob(join('schemas', '*.sql'))],
[join('share', 'cubicweb', 'migration'),
[join(_server_migration_dir, filename)
for filename in listdir(_server_migration_dir)]],
# web data
[join('share', 'cubicweb', 'cubes', 'shared', 'data'),
[join(_data_dir, fname) for fname in listdir(_data_dir)
if not isdir(join(_data_dir, fname))]],
[join('share', 'cubicweb', 'cubes', 'shared', 'data', 'images'),
[join(_data_dir, 'images', fname) for fname in listdir(join(_data_dir, 'images'))]],
[join('share', 'cubicweb', 'cubes', 'shared', 'data', 'jquery-treeview'),
[join(_data_dir, 'jquery-treeview', fname) for fname in listdir(join(_data_dir, 'jquery-treeview'))
if not isdir(join(_data_dir, 'jquery-treeview', fname))]],
[join('share', 'cubicweb', 'cubes', 'shared', 'data', 'jquery-treeview', 'images'),
[join(_data_dir, 'jquery-treeview', 'images', fname)
for fname in listdir(join(_data_dir, 'jquery-treeview', 'images'))]],
[join('share', 'cubicweb', 'cubes', 'shared', 'wdoc'),
[join(_wdoc_dir, fname) for fname in listdir(_wdoc_dir)
if not isdir(join(_wdoc_dir, fname))]],
[join('share', 'cubicweb', 'cubes', 'shared', 'wdoc', 'images'),
[join(_wdocimages_dir, fname) for fname in listdir(_wdocimages_dir)]],
[join('share', 'cubicweb', 'cubes', 'shared', 'i18n'),
glob.glob(join(_i18n_dir, '*.po'))],
# skeleton
]
except OSError:
# we are in an installed directory, don't care about this
pass