diff -r 41a78fb4107c -r b718626a0e60 server/__init__.py --- a/server/__init__.py Mon Mar 08 18:31:36 2010 +0100 +++ b/server/__init__.py Mon Mar 08 19:02:35 2010 +0100 @@ -8,6 +8,8 @@ :contact: http://www.logilab.fr/ -- mailto:contact@logilab.fr :license: GNU Lesser General Public License, v2.1 - http://www.gnu.org/licenses """ +from __future__ import with_statement + __docformat__ = "restructuredtext en" import sys @@ -209,29 +211,26 @@ def initialize_schema(config, schema, mhandler, event='create'): from cubicweb.server.schemaserial import serialize_schema - # deactivate every hooks but those responsible to set metadata - # so, NO INTEGRITY CHECKS are done, to have quicker db creation - oldmode = config.set_hooks_mode(config.DENY_ALL) - changes = config.enable_hook_category('metadata') + from cubicweb.server.session import hooks_control + session = mhandler.session paths = [p for p in config.cubes_path() + [config.apphome] if exists(join(p, 'migration'))] - # execute cubicweb's pre script - mhandler.exec_event_script('pre%s' % event) - # execute cubes pre script if any - for path in reversed(paths): - mhandler.exec_event_script('pre%s' % event, path) - # enter instance'schema into the database - mhandler.session.set_pool() - serialize_schema(mhandler.session, schema) - # execute cubicweb's post script - mhandler.exec_event_script('post%s' % event) - # execute cubes'post script if any - for path in reversed(paths): - mhandler.exec_event_script('post%s' % event, path) - # restore hooks config - if changes: - config.disable_hook_category(changes) - config.set_hooks_mode(oldmode) + # deactivate every hooks but those responsible to set metadata + # so, NO INTEGRITY CHECKS are done, to have quicker db creation + with hooks_control(session, session.HOOKS_DENY_ALL, 'metadata'): + # execute cubicweb's pre script + mhandler.exec_event_script('pre%s' % event) + # execute cubes pre script if any + for path in reversed(paths): + mhandler.exec_event_script('pre%s' % event, path) + # enter instance'schema into the database + session.set_pool() + serialize_schema(session, schema) + # execute cubicweb's post script + mhandler.exec_event_script('post%s' % event) + # execute cubes'post script if any + for path in reversed(paths): + mhandler.exec_event_script('post%s' % event, path) # sqlite'stored procedures have to be registered at connection opening time