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
""":organization: Logilab:copyright: 2001-2010 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"""importsysfromStringIOimportStringIOfromlogilab.common.testlibimportTestCase,unittest_mainfromcubicweb.devtoolsimportinit_test_databasefromcubicweb.server.checkintegrityimportcheckrepo,cnx=init_test_database()classCheckIntegrityTC(TestCase):deftest(self):sys.stderr=sys.stdout=StringIO()try:check(repo,cnx,('entities','relations','text_index','metadata'),True,True)finally:sys.stderr=sys.__stderr__sys.stdout=sys.__stdout__if__name__=='__main__':unittest_main()