misc/cmp_schema.py
author Julien Cristau <julien.cristau@logilab.fr>
Mon, 05 Dec 2011 13:37:40 +0100
changeset 8105 7980b36fb1aa
parent 5372 b74eed7e8b37
permissions -rw-r--r--
[schema sync] Update repo._type_source_cache when renaming an entity (closes #2094470) When an entity type is renamed as part of a migration, it leaves stale entries in repo._type_source_cache, which makes subsequent operations on those entities fail (they look for the old entity name instead of the new one).

"""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