Xavier (Open ERP) has proposed merging 
lp:~openerp-dev/openobject-server/trunk-cleanup-db-creation-xmo into 
lp:openobject-server.

Requested reviews:
  Vo Minh Thu (OpenERP) (vmt-openerp)

For more details, see:
https://code.launchpad.net/~openerp-dev/openobject-server/trunk-cleanup-db-creation-xmo/+merge/70040

Code cleanups to db creation, including usage of `logging` instead of netsvc in 
older code
-- 
https://code.launchpad.net/~openerp-dev/openobject-server/trunk-cleanup-db-creation-xmo/+merge/70040
Your team OpenERP R&D Team is subscribed to branch 
lp:~openerp-dev/openobject-server/trunk-cleanup-db-creation-xmo.
=== modified file 'openerp/modules/loading.py'
--- openerp/modules/loading.py	2011-07-12 13:33:43 +0000
+++ openerp/modules/loading.py	2011-08-01 16:08:55 +0000
@@ -24,36 +24,34 @@
 
 """
 
-import os, sys, imp
-from os.path import join as opj
+import base64
+import imp
 import itertools
+import logging
+import os
+import re
+import sys
+import zipfile
 import zipimport
 
+from cStringIO import StringIO
+from os.path import join as opj
+from zipfile import PyZipFile, ZIP_DEFLATED
+
+
 import openerp
-
+import openerp.modules.db
+import openerp.modules.graph
+import openerp.modules.migration
+import openerp.netsvc as netsvc
 import openerp.osv as osv
+import openerp.pooler as pooler
+import openerp.release as release
 import openerp.tools as tools
 import openerp.tools.osutil as osutil
+
 from openerp.tools.safe_eval import safe_eval as eval
-import openerp.pooler as pooler
 from openerp.tools.translate import _
-
-import openerp.netsvc as netsvc
-
-import zipfile
-import openerp.release as release
-
-import re
-import base64
-from zipfile import PyZipFile, ZIP_DEFLATED
-from cStringIO import StringIO
-
-import logging
-
-import openerp.modules.db
-import openerp.modules.graph
-import openerp.modules.migration
-
 from openerp.modules.module import \
     get_modules, get_modules_with_version, \
     load_information_from_description_file, \
@@ -81,6 +79,7 @@
        :param skip_modules: optional list of module names (packages) which have previously been loaded and can be skipped
        :return: list of modules that were installed or updated
     """
+    logger = logging.getLogger('init.load')
     def process_sql_file(cr, fp):
         queries = fp.read().split(';')
         for query in queries:
@@ -88,28 +87,20 @@
             if new_query:
                 cr.execute(new_query)
 
-    def load_init_xml(cr, module_name, idref, mode):
-        _load_data(cr, module_name, idref, mode, 'init_xml')
-
-    def load_update_xml(cr, module_name, idref, mode):
-        _load_data(cr, module_name, idref, mode, 'update_xml')
-
-    def load_demo_xml(cr, module_name, idref, mode):
-        _load_data(cr, module_name, idref, mode, 'demo_xml')
-
-    def load_data(cr, module_name, idref, mode):
-        _load_data(cr, module_name, idref, mode, 'data')
-
-    def load_demo(cr, module_name, idref, mode):
-        _load_data(cr, module_name, idref, mode, 'demo')
-
-    def load_test(cr, module_name, idref, mode):
+    load_init_xml = lambda *args: _load_data(cr, *args, kind='init_xml')
+    load_update_xml = lambda *args: _load_data(cr, *args, kind='update_xml')
+    load_demo_xml = lambda *args: _load_data(cr, *args, kind='demo_xml')
+    load_data = lambda *args: _load_data(cr, *args, kind='data')
+    load_demo = lambda *args: _load_data(cr, *args, kind='demo')
+
+    def load_test(module_name, idref, mode):
         cr.commit()
         if not tools.config.options['test_disable']:
             try:
                 _load_data(cr, module_name, idref, mode, 'test')
             except Exception, e:
-                logging.getLogger('test').exception('Tests failed to execute in module %s', module_name)
+                logging.getLogger('init.test').exception(
+                    'Tests failed to execute in module %s', module_name)
             finally:
                 if tools.config.options['test_commit']:
                     cr.commit()
@@ -126,8 +117,7 @@
 
         """
         for filename in package.data[kind]:
-            log = logging.getLogger('init')
-            log.info("module %s: loading %s", module_name, filename)
+            logger.info("module %s: loading %s", module_name, filename)
             _, ext = os.path.splitext(filename)
             pathname = os.path.join(module_name, filename)
             fp = tools.file_open(pathname)
@@ -153,20 +143,19 @@
 
     processed_modules = []
     loaded_modules = []
-    statusi = 0
     pool = pooler.get_pool(cr.dbname)
     migrations = openerp.modules.migration.MigrationManager(cr, graph)
-    logger.notifyChannel('init', netsvc.LOG_DEBUG, 'loading %d packages..' % len(graph))
+    logger.debug('loading %d packages...', len(graph))
 
     # register, instantiate and initialize models for each modules
-    for package in graph:
+    for index, package in enumerate(graph):
         module_name = package.name
         module_id = package.id
 
         if skip_modules and module_name in skip_modules:
             continue
 
-        logger.notifyChannel('init', netsvc.LOG_INFO, 'module %s: loading objects' % package.name)
+        logger.info('module %s: loading objects', package.name)
         migrations.migrate_module(package, 'pre')
         register_module_classes(package.name)
         models = pool.instanciate(package.name, cr)
@@ -174,7 +163,7 @@
         if hasattr(package, 'init') or hasattr(package, 'update') or package.state in ('to install', 'to upgrade'):
             init_module_models(cr, package.name, models)
 
-        status['progress'] = float(statusi) / len(graph)
+        status['progress'] = float(index) / len(graph)
 
         # Can't put this line out of the loop: ir.module.module will be
         # registered by init_module_models() above.
@@ -193,20 +182,20 @@
             if package.state=='to upgrade':
                 # upgrading the module information
                 modobj.write(cr, 1, [module_id], modobj.get_values_from_terp(package.data))
-            load_init_xml(cr, module_name, idref, mode)
-            load_update_xml(cr, module_name, idref, mode)
-            load_data(cr, module_name, idref, mode)
+            load_init_xml(module_name, idref, mode)
+            load_update_xml(module_name, idref, mode)
+            load_data(module_name, idref, mode)
             if hasattr(package, 'demo') or (package.dbdemo and package.state != 'installed'):
-                status['progress'] = (float(statusi)+0.75) / len(graph)
-                load_demo_xml(cr, module_name, idref, mode)
-                load_demo(cr, module_name, idref, mode)
+                status['progress'] = (index + 0.75) / len(graph)
+                load_demo_xml(module_name, idref, mode)
+                load_demo(module_name, idref, mode)
                 cr.execute('update ir_module_module set demo=%s where id=%s', (True, module_id))
 
                 # launch tests only in demo mode, as most tests will depend
                 # on demo data. Other tests can be added into the regular
                 # 'data' section, but should probably not alter the data,
                 # as there is no rollback.
-                load_test(cr, module_name, idref, mode)
+                load_test(module_name, idref, mode)
 
             processed_modules.append(package.name)
 
@@ -224,7 +213,6 @@
                     delattr(package, kind)
 
         cr.commit()
-        statusi += 1
 
     cr.commit()
 

=== modified file 'openerp/service/web_services.py'
--- openerp/service/web_services.py	2011-06-23 09:04:57 +0000
+++ openerp/service/web_services.py	2011-08-01 16:08:55 +0000
@@ -20,13 +20,17 @@
 ##############################################################################
 
 import base64
+import locale
+import logging
 import os
+import platform
 import security
+import sys
 import thread
 import threading
 import time
-import sys
-import platform
+import traceback
+from cStringIO import StringIO
 from openerp.tools.translate import _
 import openerp.netsvc as netsvc
 import openerp.pooler as pooler
@@ -34,9 +38,6 @@
 import openerp.sql_db as sql_db
 import openerp.tools as tools
 import openerp.modules
-import locale
-import logging
-from cStringIO import StringIO
 
 #.apidoc title: Exported Service methods
 #.apidoc module-mods: member-order: bysource
@@ -84,6 +85,41 @@
         finally:
             cr.close()
 
+    def _initialize_db(self, serv, id, db_name, demo, lang, user_password='admin'):
+        cr = None
+        try:
+            serv.actions[id]['progress'] = 0
+            cr = sql_db.db_connect(db_name).cursor()
+            openerp.modules.db.initialize(cr) # TODO this should be removed as it is done by pooler.restart_pool.
+            tools.config['lang'] = lang
+            cr.commit()
+            cr.close()
+
+            pool = pooler.restart_pool(db_name, demo, serv.actions[id],
+                                       update_module=True)[1]
+
+            cr = sql_db.db_connect(db_name).cursor()
+
+            if lang:
+                modobj = pool.get('ir.module.module')
+                mids = modobj.search(cr, 1, [('state', '=', 'installed')])
+                modobj.update_translations(cr, 1, mids, lang)
+
+            cr.execute('UPDATE res_users SET password=%s, context_lang=%s, active=True WHERE login=%s', (
+                user_password, lang, 'admin'))
+            cr.execute('SELECT login, password, name ' \
+                       '  FROM res_users ' \
+                       ' ORDER BY login')
+            serv.actions[id].update(users=cr.dictfetchall(), clean=True)
+            cr.commit()
+            cr.close()
+        except Exception, e:
+            serv.actions[id].update(clean=False, exception=e)
+            logging.getLogger('db.create').exception('CREATE DATABASE failed:')
+            serv.actions[id]['traceback'] = traceback.format_exc()
+            if cr:
+                cr.close()
+
     def exp_create(self, db_name, demo, lang, user_password='admin'):
         self.id_protect.acquire()
         self.id += 1
@@ -94,52 +130,8 @@
 
         self._create_empty_database(db_name)
 
-        class DBInitialize(object):
-            def __call__(self, serv, id, db_name, demo, lang, user_password='admin'):
-                cr = None
-                try:
-                    serv.actions[id]['progress'] = 0
-                    cr = sql_db.db_connect(db_name).cursor()
-                    openerp.modules.db.initialize(cr) # TODO this should be removed as it is done by pooler.restart_pool.
-                    tools.config['lang'] = lang
-                    cr.commit()
-                    cr.close()
-
-                    pool = pooler.restart_pool(db_name, demo, serv.actions[id],
-                            update_module=True)[1]
-
-                    cr = sql_db.db_connect(db_name).cursor()
-
-                    if lang:
-                        modobj = pool.get('ir.module.module')
-                        mids = modobj.search(cr, 1, [('state', '=', 'installed')])
-                        modobj.update_translations(cr, 1, mids, lang)
-
-                    cr.execute('UPDATE res_users SET password=%s, context_lang=%s, active=True WHERE login=%s', (
-                        user_password, lang, 'admin'))
-                    cr.execute('SELECT login, password, name ' \
-                               '  FROM res_users ' \
-                               ' ORDER BY login')
-                    serv.actions[id]['users'] = cr.dictfetchall()
-                    serv.actions[id]['clean'] = True
-                    cr.commit()
-                    cr.close()
-                except Exception, e:
-                    serv.actions[id]['clean'] = False
-                    serv.actions[id]['exception'] = e
-                    import traceback
-                    e_str = StringIO()
-                    traceback.print_exc(file=e_str)
-                    traceback_str = e_str.getvalue()
-                    e_str.close()
-                    netsvc.Logger().notifyChannel('web-services', netsvc.LOG_ERROR, 'CREATE DATABASE\n%s' % (traceback_str))
-                    serv.actions[id]['traceback'] = traceback_str
-                    if cr:
-                        cr.close()
-        logger = netsvc.Logger()
-        logger.notifyChannel("web-services", netsvc.LOG_INFO, 'CREATE DATABASE: %s' % (db_name.lower()))
-        dbi = DBInitialize()
-        create_thread = threading.Thread(target=dbi,
+        logging.getLogger('db.create').info('CREATE DATABASE %s', db_name.lower())
+        create_thread = threading.Thread(target=self._initialize_db,
                 args=(self, id, db_name, demo, lang, user_password))
         create_thread.start()
         self.actions[id]['thread'] = create_thread

_______________________________________________
Mailing list: https://launchpad.net/~openerp-dev-gtk
Post to     : [email protected]
Unsubscribe : https://launchpad.net/~openerp-dev-gtk
More help   : https://help.launchpad.net/ListHelp

Reply via email to