[dataimport] Uniformize the API across the different stores.
This is achieved by modifying the ``relate`` method
so that it takes an extra ``**kwargs``.
More specifically, ``SQLGenObjectStore``'s ``relate`` method
needs the the type of the subject entity which is passed through
``**kwargs`` as the ``subjtype`` keyword argument.
Actually, it is the ``add_relation`` method of the
``SQLGenObjectStore`` who needs this argument. However, as
this method is not called directly (but via the ``relate``
method), the ``subjtype`` argument is passed to
``add_relation`` via ``relate``.
The other stores' ``relate`` methods do not need this
extra argument, hence for the other stores ``**kwargs``
is empty.
In this manner, the API is unified across the different stores.
"""This module compare the Schema on the file system to the one in the database"""
from cStringIO import StringIO
from cubicweb.web.schemaviewer import SchemaViewer
from logilab.common.ureports import TextWriter
import difflib
viewer = SchemaViewer()
layout_db = viewer.visit_schema(schema, display_relations=True)
layout_fs = viewer.visit_schema(fsschema, display_relations=True)
writer = TextWriter()
stream_db = StringIO()
stream_fs = StringIO()
writer.format(layout_db, stream=stream_db)
writer.format(layout_fs, stream=stream_fs)
stream_db.seek(0)
stream_fs.seek(0)
db = stream_db.getvalue().splitlines()
fs = stream_fs.getvalue().splitlines()
open('db_schema.txt', 'w').write(stream_db.getvalue())
open('fs_schema.txt', 'w').write(stream_fs.getvalue())
#for diff in difflib.ndiff(fs, db):
# print diff