[FIX] survey: data_get code now returns the good type for sequence
[odoo/odoo.git] / openerp-server
index 1486c49..00da3ac 100755 (executable)
@@ -39,10 +39,11 @@ import signal
 import sys
 import threading
 import traceback
+import time
 
-import openerp.release as release
-__author__ = release.author
-__version__ = release.version
+import openerp
+__author__ = openerp.release.author
+__version__ = openerp.release.version
 
 if os.name == 'posix':
     import pwd
@@ -53,118 +54,94 @@ if os.name == 'posix':
         sys.exit(1)
 
 #-----------------------------------------------------------------------
-# import the tools module so that the commandline parameters are parsed
+# parse the command line
 #-----------------------------------------------------------------------
-import openerp.tools as tools
-tools.config.parse_config(sys.argv[1:])
+openerp.tools.config.parse_config(sys.argv[1:])
+config = openerp.tools.config
 
 #----------------------------------------------------------
 # get logger
 #----------------------------------------------------------
-import openerp.netsvc as netsvc
-netsvc.init_logger()
+openerp.netsvc.init_logger()
 logger = logging.getLogger('server')
 
-logger.info("OpenERP version - %s", release.version)
-for name, value in [('addons_path', tools.config['addons_path']),
-                    ('database hostname', tools.config['db_host'] or 'localhost'),
-                    ('database port', tools.config['db_port'] or '5432'),
-                    ('database user', tools.config['db_user'])]:
+logger.info("OpenERP version - %s", __version__)
+for name, value in [('addons_path', config['addons_path']),
+                    ('database hostname', config['db_host'] or 'localhost'),
+                    ('database port', config['db_port'] or '5432'),
+                    ('database user', config['db_user'])]:
     logger.info("%s - %s", name, value)
 
 # Don't allow if the connection to PostgreSQL done by postgres user
-if tools.config['db_user'] == 'postgres':
+if config['db_user'] == 'postgres':
     logger.error("Connecting to the database as 'postgres' user is forbidden, as it present major security issues. Shutting down.")
     sys.exit(1)
 
-import time
-
 #----------------------------------------------------------
 # init net service
 #----------------------------------------------------------
 logger.info('initialising distributed objects services')
 
-#---------------------------------------------------------------
-# connect to the database and initialize it with base if needed
-#---------------------------------------------------------------
-import openerp.pooler as pooler
-
-#----------------------------------------------------------
-# import basic modules
-#----------------------------------------------------------
-import openerp.osv as osv
-import openerp.workflow as workflow
-import openerp.report as report
-import openerp.service as service
-
-#----------------------------------------------------------
-# import addons
-#----------------------------------------------------------
-
-import openerp.addons as addons
-
 #----------------------------------------------------------
 # Load and update databases if requested
 #----------------------------------------------------------
 
-import openerp.service.http_server as service_http_server
-
-if not ( tools.config["stop_after_init"] or \
-    tools.config["translate_in"] or \
-    tools.config["translate_out"] ):
-    service_http_server.init_servers()
-    service_http_server.init_xmlrpc()
-    service_http_server.init_static_http()
-
-    import openerp.service.netrpc_server as service_netrpc_server
-    service_netrpc_server.init_servers()
-
-if tools.config['db_name']:
-    for dbname in tools.config['db_name'].split(','):
-        db,pool = pooler.get_db_and_pool(dbname, update_module=tools.config['init'] or tools.config['update'], pooljobs=False)
+if not ( config["stop_after_init"] or \
+    config["translate_in"] or \
+    config["translate_out"] ):
+    openerp.osv.osv.start_object_proxy()
+    openerp.service.web_services.start_web_services()
+    http_server = openerp.service.http_server
+    netrpc_server = openerp.service.netrpc_server
+    http_server.init_servers()
+    http_server.init_xmlrpc()
+    http_server.init_static_http()
+    netrpc_server.init_servers()
+
+if config['db_name']:
+    for dbname in config['db_name'].split(','):
+        db, pool = openerp.pooler.get_db_and_pool(dbname, update_module=config['init'] or config['update'], pooljobs=False)
         cr = db.cursor()
 
-        if tools.config["test_file"]:
-            logger.info('loading test file %s', tools.config["test_file"])
-            tools.convert_yaml_import(cr, 'base', file(tools.config["test_file"]), {}, 'test', True)
+        if config["test_file"]:
+            logger.info('loading test file %s', config["test_file"])
+            openerp.tools.convert_yaml_import(cr, 'base', file(config["test_file"]), {}, 'test', True)
             cr.rollback()
 
-        pool.get('ir.cron')._poolJobs(db.dbname)
+        pool.get('ir.cron').restart(db.dbname)
 
         cr.close()
 
 #----------------------------------------------------------
 # translation stuff
 #----------------------------------------------------------
-if tools.config["translate_out"]:
-    import csv
-
-    if tools.config["language"]:
-        msg = "language %s" % (tools.config["language"],)
+if config["translate_out"]:
+    if config["language"]:
+        msg = "language %s" % (config["language"],)
     else:
         msg = "new language"
-    logger.info('writing translation file for %s to %s', msg, tools.config["translate_out"])
+    logger.info('writing translation file for %s to %s', msg, config["translate_out"])
 
-    fileformat = os.path.splitext(tools.config["translate_out"])[-1][1:].lower()
-    buf = file(tools.config["translate_out"], "w")
-    dbname = tools.config['db_name']
-    cr = pooler.get_db(dbname).cursor()
-    tools.trans_export(tools.config["language"], tools.config["translate_modules"] or ["all"], buf, fileformat, cr)
+    fileformat = os.path.splitext(config["translate_out"])[-1][1:].lower()
+    buf = file(config["translate_out"], "w")
+    dbname = config['db_name']
+    cr = openerp.pooler.get_db(dbname).cursor()
+    openerp.tools.trans_export(config["language"], config["translate_modules"] or ["all"], buf, fileformat, cr)
     cr.close()
     buf.close()
 
     logger.info('translation file written successfully')
     sys.exit(0)
 
-if tools.config["translate_in"]:
-    context = {'overwrite': tools.config["overwrite_existing_translations"]}
-    dbname = tools.config['db_name']
-    cr = pooler.get_db(dbname).cursor()
-    tools.trans_load(cr,
-                     tools.config["translate_in"], 
-                     tools.config["language"],
+if config["translate_in"]:
+    context = {'overwrite': config["overwrite_existing_translations"]}
+    dbname = config['db_name']
+    cr = openerp.pooler.get_db(dbname).cursor()
+    openerp.tools.trans_load(cr,
+                     config["translate_in"], 
+                     config["language"],
                      context=context)
-    tools.trans_update_res_ids(cr)
+    openerp.tools.trans_update_res_ids(cr)
     cr.commit()
     cr.close()
     sys.exit(0)
@@ -172,9 +149,10 @@ if tools.config["translate_in"]:
 #----------------------------------------------------------------------------------
 # if we don't want the server to continue to run after initialization, we quit here
 #----------------------------------------------------------------------------------
-if tools.config["stop_after_init"]:
+if config["stop_after_init"]:
     sys.exit(0)
 
+openerp.netsvc.start_agent()
 
 #----------------------------------------------------------
 # Launch Servers
@@ -186,15 +164,16 @@ SIGNALS = dict(
     [(getattr(signal, sign), sign) for sign in LST_SIGNALS]
 )
 
-netsvc.quit_signals_received = 0
+quit_signals_received = 0
 
 def handler(signum, frame):
     """
     :param signum: the signal number
     :param frame: the interrupted stack frame or None
     """
-    netsvc.quit_signals_received += 1
-    if netsvc.quit_signals_received > 1:
+    global quit_signals_received
+    quit_signals_received += 1
+    if quit_signals_received > 1:
         sys.stderr.write("Forced shutdown.\n")
         os._exit(0)
 
@@ -219,10 +198,10 @@ if os.name == 'posix':
     signal.signal(signal.SIGQUIT, dumpstacks)
 
 def quit():
-    netsvc.Agent.quit()
-    netsvc.Server.quitAll()
-    if tools.config['pidfile']:
-        os.unlink(tools.config['pidfile'])
+    openerp.netsvc.Agent.quit()
+    openerp.netsvc.Server.quitAll()
+    if config['pidfile']:
+        os.unlink(config['pidfile'])
     logger = logging.getLogger('shutdown')
     logger.info("Initiating OpenERP Server shutdown")
     logger.info("Hit CTRL-C again or send a second signal to immediately terminate the server...")
@@ -240,17 +219,17 @@ def quit():
                 time.sleep(0.05)
     sys.exit(0)
 
-if tools.config['pidfile']:
-    fd = open(tools.config['pidfile'], 'w')
+if config['pidfile']:
+    fd = open(config['pidfile'], 'w')
     pidtext = "%d" % (os.getpid())
     fd.write(pidtext)
     fd.close()
 
-netsvc.Server.startAll()
+openerp.netsvc.Server.startAll()
 
 logger.info('OpenERP server is running, waiting for connections...')
 
-while netsvc.quit_signals_received == 0:
+while quit_signals_received == 0:
     time.sleep(60)
 
 quit()