first draft for a simple hooks based custom attribute storage,
with a BytesFileSystemStorage POC implementation.
Basically:
* a dictionary contains maps from which attribute of which entity types are
mapped to which custom storage
* hooks check for one of these entity type being added/modified/deleted
* read is based on the sql generator callback mecanism (used in vcsfile for
instance)
* all storages have the same basic interface (read, add, update, delete),
and should be pluggable in a transparent way (except at migration time
when one want to change from a storage to another)
* the sample BytesFileSystemStorage:
* may store Bytes attributes content of any entity type as file on the file system
* is based on one FSPATH rql/sql function and another _fsopen only available in sql
* has a dumb file name allocation algorithm
"""this pytestconf automatically adds the mx's python version in the PYTHONPATH
:license: GNU Lesser General Public License, v2.1 - http://www.gnu.org/licenses
"""
import sys
import os.path as osp
import cubicweb
# remove 'mx' modules imported by cubicweb
for modname in sys.modules.keys():
if modname.startswith('mx'):
sys.modules.pop(modname)
# this is where mx should get imported from
mxpath = osp.abspath(osp.join(osp.dirname(cubicweb.__file__), 'embedded'))
sys.path.insert(1, mxpath)
# make sure the correct mx is imported
import mx
assert osp.dirname(mx.__file__) == osp.join(mxpath, 'mx'), '%s != %s' % (osp.dirname(mx.__file__), mxpath)