misc/cmp_schema.py
author Julien Jehannet <julien.jehannet@logilab.fr>
Fri, 28 Jan 2011 16:08:40 +0100
branchstable
changeset 6919 8fd6921f3e7c
parent 5372 b74eed7e8b37
permissions -rw-r--r--
[selectors] modify workflow selectors: is_in_state, on_transition - factorize `is_on_state` selector - add new `on_transition` selector Especially useful to match pending transitions to enable notifications when your workflow allows several transition to the same states. Note that if workflow `change_state` adapter method is used, this selector will not be triggered. In debug mode: These both selectors will check against the entity current workflow if expected values given in selector argument are valid. ValueError exception will be raised for unmatching state/transition names against the current workflow (generic etype workflow). (check against custom workflow is not implemented)

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