openerp-dev-web team mailing list archive
-
openerp-dev-web team
-
Mailing list archive
-
Message #02921
[Merge] lp:~openerp-dev/openobject-server/vmt-server-lib into lp:openobject-server
Olivier Dony (OpenERP) has proposed merging lp:~openerp-dev/openobject-server/vmt-server-lib into lp:openobject-server.
Requested reviews:
OpenERP Core Team (openerp)
For more details, see:
https://code.launchpad.net/~openerp-dev/openobject-server/vmt-server-lib/+merge/48887
--
https://code.launchpad.net/~openerp-dev/openobject-server/vmt-server-lib/+merge/48887
Your team OpenERP R&D Team is subscribed to branch lp:~openerp-dev/openobject-server/vmt-server-lib.
=== renamed directory 'bin' => 'openerp'
=== renamed file 'bin/openerp-server.py' => 'openerp-server.py'
--- bin/openerp-server.py 2011-01-26 16:50:30 +0000
+++ openerp-server.py 2011-02-08 09:37:03 +0000
@@ -40,7 +40,7 @@
import threading
import traceback
-import release
+import openerp.release as release
__author__ = release.author
__version__ = release.version
@@ -52,16 +52,19 @@
sys.stderr.write("Attempted to run OpenERP server as root. This is not good, aborting.\n")
sys.exit(1)
+#-----------------------------------------------------------------------
+# import the tools module so that the commandline parameters are parsed
+#-----------------------------------------------------------------------
+import openerp.tools as tools
+tools.config.parse_config(sys.argv[1:])
+
#----------------------------------------------------------
# get logger
#----------------------------------------------------------
-import netsvc
+import openerp.netsvc as netsvc
+netsvc.init_logger()
logger = logging.getLogger('server')
-#-----------------------------------------------------------------------
-# import the tools module so that the commandline parameters are parsed
-#-----------------------------------------------------------------------
-import tools
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'),
@@ -84,37 +87,37 @@
#---------------------------------------------------------------
# connect to the database and initialize it with base if needed
#---------------------------------------------------------------
-import pooler
+import openerp.pooler as pooler
#----------------------------------------------------------
# import basic modules
#----------------------------------------------------------
-import osv
-import workflow
-import report
-import service
+import openerp.osv as osv
+import openerp.workflow as workflow
+import openerp.report as report
+import openerp.service as service
#----------------------------------------------------------
# import addons
#----------------------------------------------------------
-import addons
+import openerp.addons as addons
#----------------------------------------------------------
# Load and update databases if requested
#----------------------------------------------------------
-import service.http_server
+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()
+ service_http_server.init_servers()
+ service_http_server.init_xmlrpc()
+ service_http_server.init_static_http()
- import service.netrpc_server
- service.netrpc_server.init_servers()
+ 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(','):
=== modified file 'openerp/__init__.py'
--- bin/__init__.py 2009-10-20 10:52:23 +0000
+++ openerp/__init__.py 2011-02-08 09:37:03 +0000
@@ -19,6 +19,23 @@
#
##############################################################################
+import addons
+import ir
+import loglevels
+import netsvc
+import osv
+import pooler
+import pychart
+import release
+import report
+import run_tests
+import service
+import sql_db
+import test
+import tiny_socket
+import tools
+import wizard
+import workflow
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
=== modified file 'openerp/addons/__init__.py'
--- bin/addons/__init__.py 2011-02-03 23:00:23 +0000
+++ openerp/addons/__init__.py 2011-02-08 09:37:03 +0000
@@ -25,17 +25,17 @@
import itertools
import zipimport
-import osv
-import tools
-import tools.osutil
-from tools.safe_eval import safe_eval as eval
-import pooler
-from tools.translate import _
+import openerp.osv as osv
+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 netsvc
+import openerp.netsvc as netsvc
import zipfile
-import release
+import openerp.release as release
import re
import base64
@@ -44,25 +44,32 @@
import logging
-
logger = netsvc.Logger()
-_ad = os.path.abspath(opj(tools.ustr(tools.config['root_path']), u'addons')) # default addons path (base)
-ad_paths= map(lambda m: os.path.abspath(tools.ustr(m.strip())), tools.config['addons_path'].split(','))
-
-sys.path.insert(1, _ad)
-
-ad_cnt=1
-for adp in ad_paths:
- if adp != _ad:
- sys.path.insert(ad_cnt, adp)
- ad_cnt+=1
-
-ad_paths.append(_ad) # for get_module_path
+_ad = os.path.dirname(__file__) # default addons path (base)
+ad_paths = []
# Modules already loaded
loaded = []
+def initialize_sys_path():
+ global ad_paths
+
+ if ad_paths:
+ return
+
+ ad_paths = map(lambda m: os.path.abspath(tools.ustr(m.strip())), tools.config['addons_path'].split(','))
+
+ sys.path.insert(1, _ad)
+
+ ad_cnt=1
+ for adp in ad_paths:
+ if adp != _ad:
+ sys.path.insert(ad_cnt, adp)
+ ad_cnt+=1
+
+ ad_paths.append(_ad) # for get_module_path
+
class Graph(dict):
def addNode(self, name, deps):
@@ -186,7 +193,7 @@
zip = zipfile.ZipFile(path + ".zip")
files = ['/'.join(f.split('/')[1:]) for f in zip.namelist()]
else:
- files = tools.osutil.listdir(path, True)
+ files = osutil.listdir(path, True)
tree = {}
for f in files:
@@ -218,7 +225,7 @@
def _zippy(archive, path, src=True):
path = os.path.abspath(path)
base = os.path.basename(path)
- for f in tools.osutil.listdir(path, True):
+ for f in osutil.listdir(path, True):
bf = os.path.basename(f)
if not RE_exclude.search(bf) and (src or bf in ('__openerp__.py', '__terp__.py') or not bf.endswith('.py')):
archive.write(os.path.join(path, f), os.path.join(base, f))
@@ -559,7 +566,7 @@
a.update(b)
return a
- from tools.parse_version import parse_version
+ from openerp.tools.parse_version import parse_version
parsed_installed_version = parse_version(pkg.installed_version or '')
current_version = parse_version(convert_version(pkg.data.get('version', '0')))
@@ -798,6 +805,14 @@
logging.getLogger('init').warning('invalid module names, ignored: %s', ", ".join(incorrect_names))
def load_modules(db, force_demo=False, status=None, update_module=False):
+
+ initialize_sys_path()
+
+ # Backward compatibility: addons don't have to import openerp.xxx, they still can import xxx
+ for k, v in list(sys.modules.items()):
+ if k.startswith('openerp.') and sys.modules.get(k[8:]) is None:
+ sys.modules[k[8:]] = v
+
if not status:
status = {}
cr = db.cursor()
=== modified file 'openerp/ir/ir.py'
--- bin/ir/ir.py 2010-07-22 13:28:35 +0000
+++ openerp/ir/ir.py 2011-02-08 09:37:03 +0000
@@ -20,8 +20,8 @@
##############################################################################
import pickle
-import osv
-import pooler
+import openerp.osv as osv
+import openerp.pooler as pooler
def ir_set(cr, uid, key, key2, name, models, value, replace=True, isobject=False, meta=None):
obj = pooler.get_pool(cr.dbname).get('ir.values')
=== added file 'openerp/loglevels.py'
--- openerp/loglevels.py 1970-01-01 00:00:00 +0000
+++ openerp/loglevels.py 2011-02-08 09:37:03 +0000
@@ -0,0 +1,175 @@
+# -*- coding: utf-8 -*-
+##############################################################################
+#
+# OpenERP, Open Source Management Solution
+# Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>).
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+##############################################################################
+
+import sys
+import logging
+import warnings
+
+LOG_NOTSET = 'notset'
+LOG_DEBUG_SQL = 'debug_sql'
+LOG_DEBUG_RPC_ANSWER = 'debug_rpc_answer'
+LOG_DEBUG_RPC = 'debug_rpc'
+LOG_DEBUG = 'debug'
+LOG_TEST = 'test'
+LOG_INFO = 'info'
+LOG_WARNING = 'warn'
+LOG_ERROR = 'error'
+LOG_CRITICAL = 'critical'
+
+logging.DEBUG_RPC_ANSWER = logging.DEBUG - 4
+logging.addLevelName(logging.DEBUG_RPC_ANSWER, 'DEBUG_RPC_ANSWER')
+logging.DEBUG_RPC = logging.DEBUG - 2
+logging.addLevelName(logging.DEBUG_RPC, 'DEBUG_RPC')
+logging.DEBUG_SQL = logging.DEBUG_RPC - 3
+logging.addLevelName(logging.DEBUG_SQL, 'DEBUG_SQL')
+
+logging.TEST = logging.INFO - 5
+logging.addLevelName(logging.TEST, 'TEST')
+
+class Logger(object):
+ def __init__(self):
+ warnings.warn("The netsvc.Logger API shouldn't be used anymore, please "
+ "use the standard `logging.getLogger` API instead",
+ PendingDeprecationWarning, stacklevel=2)
+ super(Logger, self).__init__()
+
+ def notifyChannel(self, name, level, msg):
+ warnings.warn("notifyChannel API shouldn't be used anymore, please use "
+ "the standard `logging` module instead",
+ PendingDeprecationWarning, stacklevel=2)
+ from service.web_services import common
+
+ log = logging.getLogger(ustr(name))
+
+ if level in [LOG_DEBUG_RPC, LOG_TEST] and not hasattr(log, level):
+ fct = lambda msg, *args, **kwargs: log.log(getattr(logging, level.upper()), msg, *args, **kwargs)
+ setattr(log, level, fct)
+
+
+ level_method = getattr(log, level)
+
+ if isinstance(msg, Exception):
+ msg = exception_to_unicode(msg)
+
+ try:
+ msg = ustr(msg).strip()
+ if level in (LOG_ERROR, LOG_CRITICAL): # and tools.config.get_misc('debug','env_info',False):
+ msg = common().exp_get_server_environment() + "\n" + msg
+
+ result = msg.split('\n')
+ except UnicodeDecodeError:
+ result = msg.strip().split('\n')
+ try:
+ if len(result)>1:
+ for idx, s in enumerate(result):
+ level_method('[%02d]: %s' % (idx+1, s,))
+ elif result:
+ level_method(result[0])
+ except IOError:
+ # TODO: perhaps reset the logger streams?
+ #if logrotate closes our files, we end up here..
+ pass
+ except Exception:
+ # better ignore the exception and carry on..
+ pass
+
+ def set_loglevel(self, level, logger=None):
+ if logger is not None:
+ log = logging.getLogger(str(logger))
+ else:
+ log = logging.getLogger()
+ log.setLevel(logging.INFO) # make sure next msg is printed
+ log.info("Log level changed to %s" % logging.getLevelName(level))
+ log.setLevel(level)
+
+ def shutdown(self):
+ logging.shutdown()
+
+# TODO get_encodings, ustr and exception_to_unicode were originally from tools.misc.
+# There are here until we refactor tools so that this module doesn't depends on tools.
+
+def get_encodings(hint_encoding='utf-8'):
+ fallbacks = {
+ 'latin1': 'latin9',
+ 'iso-8859-1': 'iso8859-15',
+ 'cp1252': '1252',
+ }
+ if hint_encoding:
+ yield hint_encoding
+ if hint_encoding.lower() in fallbacks:
+ yield fallbacks[hint_encoding.lower()]
+
+ # some defaults (also taking care of pure ASCII)
+ for charset in ['utf8','latin1']:
+ if not (hint_encoding) or (charset.lower() != hint_encoding.lower()):
+ yield charset
+
+ from locale import getpreferredencoding
+ prefenc = getpreferredencoding()
+ if prefenc and prefenc.lower() != 'utf-8':
+ yield prefenc
+ prefenc = fallbacks.get(prefenc.lower())
+ if prefenc:
+ yield prefenc
+
+def ustr(value, hint_encoding='utf-8'):
+ """This method is similar to the builtin `str` method, except
+ it will return unicode() string.
+
+ @param value: the value to convert
+ @param hint_encoding: an optional encoding that was detected
+ upstream and should be tried first to
+ decode ``value``.
+
+ @rtype: unicode
+ @return: unicode string
+ """
+ if isinstance(value, Exception):
+ return exception_to_unicode(value)
+
+ if isinstance(value, unicode):
+ return value
+
+ if not isinstance(value, basestring):
+ try:
+ return unicode(value)
+ except Exception:
+ raise UnicodeError('unable to convert %r' % (value,))
+
+ for ln in get_encodings(hint_encoding):
+ try:
+ return unicode(value, ln)
+ except Exception:
+ pass
+ raise UnicodeError('unable to convert %r' % (value,))
+
+
+def exception_to_unicode(e):
+ if (sys.version_info[:2] < (2,6)) and hasattr(e, 'message'):
+ return ustr(e.message)
+ if hasattr(e, 'args'):
+ return "\n".join((ustr(a) for a in e.args))
+ try:
+ return ustr(e)
+ except Exception:
+ return u"Unknown message"
+
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
=== modified file 'openerp/netsvc.py'
--- bin/netsvc.py 2011-01-26 16:50:30 +0000
+++ openerp/netsvc.py 2011-02-08 09:37:03 +0000
@@ -37,6 +37,10 @@
import warnings
import heapq
+# TODO modules that import netsvc only for things from loglevels must be changed to use loglevels.
+from loglevels import *
+import tools
+
class Service(object):
""" Base class for *Local* services
@@ -130,27 +134,6 @@
else:
raise
-LOG_NOTSET = 'notset'
-LOG_DEBUG_SQL = 'debug_sql'
-LOG_DEBUG_RPC_ANSWER = 'debug_rpc_answer'
-LOG_DEBUG_RPC = 'debug_rpc'
-LOG_DEBUG = 'debug'
-LOG_TEST = 'test'
-LOG_INFO = 'info'
-LOG_WARNING = 'warn'
-LOG_ERROR = 'error'
-LOG_CRITICAL = 'critical'
-
-logging.DEBUG_RPC_ANSWER = logging.DEBUG - 4
-logging.addLevelName(logging.DEBUG_RPC_ANSWER, 'DEBUG_RPC_ANSWER')
-logging.DEBUG_RPC = logging.DEBUG - 2
-logging.addLevelName(logging.DEBUG_RPC, 'DEBUG_RPC')
-logging.DEBUG_SQL = logging.DEBUG_RPC - 3
-logging.addLevelName(logging.DEBUG_SQL, 'DEBUG_SQL')
-
-logging.TEST = logging.INFO - 5
-logging.addLevelName(logging.TEST, 'TEST')
-
BLACK, RED, GREEN, YELLOW, BLUE, MAGENTA, CYAN, WHITE, _NOTHING, DEFAULT = range(10)
#The background is set with 40 plus the number of the color, and the foreground with 30
#These are the sequences need to get colored ouput
@@ -226,72 +209,10 @@
# add the handler to the root logger
logger = logging.getLogger()
+ logger.handlers = []
logger.addHandler(handler)
logger.setLevel(int(tools.config['log_level'] or '0'))
-
-class Logger(object):
- def __init__(self):
- warnings.warn("The netsvc.Logger API shouldn't be used anymore, please "
- "use the standard `logging.getLogger` API instead",
- PendingDeprecationWarning, stacklevel=2)
- super(Logger, self).__init__()
-
- def notifyChannel(self, name, level, msg):
- warnings.warn("notifyChannel API shouldn't be used anymore, please use "
- "the standard `logging` module instead",
- PendingDeprecationWarning, stacklevel=2)
- from service.web_services import common
-
- log = logging.getLogger(tools.ustr(name))
-
- if level in [LOG_DEBUG_RPC, LOG_TEST] and not hasattr(log, level):
- fct = lambda msg, *args, **kwargs: log.log(getattr(logging, level.upper()), msg, *args, **kwargs)
- setattr(log, level, fct)
-
-
- level_method = getattr(log, level)
-
- if isinstance(msg, Exception):
- msg = tools.exception_to_unicode(msg)
-
- try:
- msg = tools.ustr(msg).strip()
- if level in (LOG_ERROR, LOG_CRITICAL) and tools.config.get_misc('debug','env_info',False):
- msg = common().exp_get_server_environment() + "\n" + msg
-
- result = msg.split('\n')
- except UnicodeDecodeError:
- result = msg.strip().split('\n')
- try:
- if len(result)>1:
- for idx, s in enumerate(result):
- level_method('[%02d]: %s' % (idx+1, s,))
- elif result:
- level_method(result[0])
- except IOError:
- # TODO: perhaps reset the logger streams?
- #if logrotate closes our files, we end up here..
- pass
- except Exception:
- # better ignore the exception and carry on..
- pass
-
- def set_loglevel(self, level, logger=None):
- if logger is not None:
- log = logging.getLogger(str(logger))
- else:
- log = logging.getLogger()
- log.setLevel(logging.INFO) # make sure next msg is printed
- log.info("Log level changed to %s" % logging.getLevelName(level))
- log.setLevel(level)
-
- def shutdown(self):
- logging.shutdown()
-
-import tools
-init_logger()
-
class Agent(object):
"""Singleton that keeps track of cancellable tasks to run at a given
timestamp.
=== modified file 'openerp/osv/expression.py'
--- bin/osv/expression.py 2011-01-17 08:41:08 +0000
+++ openerp/osv/expression.py 2011-02-08 09:37:03 +0000
@@ -20,7 +20,7 @@
#
##############################################################################
-from tools import flatten, reverse_enumerate
+from openerp.tools import flatten, reverse_enumerate
import fields
=== modified file 'openerp/osv/fields.py'
--- bin/osv/fields.py 2011-02-07 10:26:52 +0000
+++ openerp/osv/fields.py 2011-02-08 09:37:03 +0000
@@ -38,9 +38,9 @@
import xmlrpclib
from psycopg2 import Binary
-import netsvc
-import tools
-from tools.translate import _
+import openerp.netsvc as netsvc
+import openerp.tools as tools
+from openerp.tools.translate import _
def _symbol_set(symb):
if symb == None or symb == False:
=== modified file 'openerp/osv/orm.py'
--- bin/osv/orm.py 2011-02-07 15:27:47 +0000
+++ openerp/osv/orm.py 2011-02-08 09:37:03 +0000
@@ -49,18 +49,18 @@
import traceback
import types
-import netsvc
+import openerp.netsvc as netsvc
from lxml import etree
-from tools.config import config
-from tools.translate import _
+from openerp.tools.config import config
+from openerp.tools.translate import _
import fields
from query import Query
-import tools
-from tools.safe_eval import safe_eval as eval
+import openerp.tools as tools
+from openerp.tools.safe_eval import safe_eval as eval
# List of etree._Element subclasses that we choose to ignore when parsing XML.
-from tools import SKIPPED_ELEMENT_TYPES
+from openerp.tools import SKIPPED_ELEMENT_TYPES
regex_order = re.compile('^(([a-z0-9_]+|"[a-z0-9_]+")( *desc| *asc)?( *, *|))+$', re.I)
=== modified file 'openerp/osv/osv.py'
--- bin/osv/osv.py 2011-01-17 09:47:50 +0000
+++ openerp/osv/osv.py 2011-02-08 09:37:03 +0000
@@ -24,13 +24,13 @@
#
import orm
-import netsvc
-import pooler
+import openerp.netsvc as netsvc
+import openerp.pooler as pooler
import copy
import logging
from psycopg2 import IntegrityError, errorcodes
-from tools.func import wraps
-from tools.translate import translate
+from openerp.tools.func import wraps
+from openerp.tools.translate import translate
module_list = []
module_class_list = {}
=== modified file 'openerp/pooler.py'
--- bin/pooler.py 2010-10-01 11:25:52 +0000
+++ openerp/pooler.py 2011-02-08 09:37:03 +0000
@@ -30,9 +30,9 @@
if db_name in pool_dic:
pool = pool_dic[db_name]
else:
- import addons
- import osv.osv
- pool = osv.osv.osv_pool()
+ import openerp.addons as addons
+ import openerp.osv.osv as osv_osv
+ pool = osv_osv.osv_pool()
pool_dic[db_name] = pool
try:
@@ -66,7 +66,7 @@
# sql_db must not be loaded before the logger is initialized.
# sql_db import psycopg2.tool which create a default logger if there is not.
# this resulting of having the logs outputed twice...
- import sql_db
+ import openerp.sql_db as sql_db
db = sql_db.db_connect(db_name)
return db
=== modified file 'openerp/report/__init__.py'
--- bin/report/__init__.py 2009-10-20 10:52:23 +0000
+++ openerp/report/__init__.py 2011-02-08 09:37:03 +0000
@@ -24,7 +24,7 @@
import print_fnc
import custom
import render
-import pychart
+import openerp.pychart
import int_to_text
import report_sxw
=== modified file 'openerp/report/custom.py'
--- bin/report/custom.py 2010-09-23 10:01:45 +0000
+++ openerp/report/custom.py 2011-02-08 09:37:03 +0000
@@ -21,23 +21,23 @@
import os
import time
-import netsvc
+import openerp.netsvc as netsvc
-import tools
-from tools.safe_eval import safe_eval as eval
+import openerp.tools as tools
+from openerp.tools.safe_eval import safe_eval as eval
import print_xml
import render
from interface import report_int
import common
-from osv.osv import except_osv
-from osv.orm import browse_null
-from osv.orm import browse_record_list
-import pooler
+from openerp.osv.osv import except_osv
+from openerp.osv.orm import browse_null
+from openerp.osv.orm import browse_record_list
+import openerp.pooler as pooler
from pychart import *
import misc
import cStringIO
from lxml import etree
-from tools.translate import _
+from openerp.tools.translate import _
class external_pdf(render.render):
def __init__(self, pdf):
=== modified file 'openerp/report/interface.py'
--- bin/report/interface.py 2011-01-17 18:44:44 +0000
+++ openerp/report/interface.py 2011-02-08 09:37:03 +0000
@@ -23,11 +23,11 @@
import re
from lxml import etree
-import netsvc
-import pooler
+import openerp.netsvc as netsvc
+import openerp.pooler as pooler
-import tools
-import addons
+import openerp.tools as tools
+import openerp.addons as addons
import print_xml
import render
import urllib
=== modified file 'openerp/report/print_xml.py'
--- bin/report/print_xml.py 2011-01-04 10:13:35 +0000
+++ openerp/report/print_xml.py 2011-02-08 09:37:03 +0000
@@ -21,13 +21,13 @@
import os,types
from lxml import etree
-import netsvc
-import tools
-from tools.safe_eval import safe_eval
+import openerp.netsvc as netsvc
+import openerp.tools as tools
+from openerp.tools.safe_eval import safe_eval
import print_fnc
import copy
-from osv.orm import browse_null, browse_record
-import pooler
+from openerp.osv.orm import browse_null, browse_record
+import openerp.pooler as pooler
class InheritDict(dict):
# Might be usefull when we're doing name lookup for call or eval.
=== modified file 'openerp/report/printscreen/ps_form.py'
--- bin/report/printscreen/ps_form.py 2010-09-06 08:11:04 +0000
+++ openerp/report/printscreen/ps_form.py 2011-02-08 09:37:03 +0000
@@ -19,11 +19,11 @@
#
##############################################################################
-from report.interface import report_int
-import pooler
-import tools
+from openerp.report.interface import report_int
+import openerp.pooler as pooler
+import openerp.tools as tools
-from report import render
+from openerp.report import render
from lxml import etree
import time, os
=== modified file 'openerp/report/printscreen/ps_list.py'
--- bin/report/printscreen/ps_list.py 2010-10-11 09:37:09 +0000
+++ openerp/report/printscreen/ps_list.py 2011-02-08 09:37:03 +0000
@@ -19,18 +19,17 @@
#
##############################################################################
-from report.interface import report_int
-import pooler
-import tools
-from tools.safe_eval import safe_eval as eval
+from openerp.report.interface import report_int
+import openerp.pooler as pooler
+import openerp.tools as tools
+from openerp.tools.safe_eval import safe_eval as eval
from lxml import etree
-from report import render
+from openerp.report import render, report_sxw
import locale
import time, os
from operator import itemgetter
from datetime import datetime
-from report import report_sxw
class report_printscreen_list(report_int):
def __init__(self, name):
=== modified file 'openerp/report/render/html2html/html2html.py'
--- bin/report/render/html2html/html2html.py 2009-12-02 09:30:08 +0000
+++ openerp/report/render/html2html/html2html.py 2011-02-08 09:37:03 +0000
@@ -19,10 +19,10 @@
#
##############################################################################
-from report.render.rml2pdf import utils
+from openerp.report.render.rml2pdf import utils
from lxml import etree
import copy
-import pooler
+import openerp.pooler as pooler
import base64
import cStringIO
import re
=== modified file 'openerp/report/render/makohtml2html/makohtml2html.py'
--- bin/report/render/makohtml2html/makohtml2html.py 2009-12-15 05:22:39 +0000
+++ openerp/report/render/makohtml2html/makohtml2html.py 2011-02-08 09:37:03 +0000
@@ -22,7 +22,7 @@
from lxml import etree
from mako.template import Template
from mako.lookup import TemplateLookup
-import netsvc
+import openerp.netsvc as netsvc
import traceback, sys, os
class makohtml2html(object):
@@ -130,4 +130,4 @@
def parseNode(html, localcontext = {}):
r = makohtml2html(html, localcontext)
- return r.render()
\ No newline at end of file
+ return r.render()
=== modified file 'openerp/report/render/odt2odt/odt2odt.py'
--- bin/report/render/odt2odt/odt2odt.py 2009-10-20 10:52:23 +0000
+++ openerp/report/render/odt2odt/odt2odt.py 2011-02-08 09:37:03 +0000
@@ -19,7 +19,7 @@
#
##############################################################################
-from report.render.rml2pdf import utils
+from openerp.report.render.rml2pdf import utils
from lxml import etree
import copy
=== modified file 'openerp/report/render/rml2html/rml2html.py'
--- bin/report/render/rml2html/rml2html.py 2010-01-12 10:48:30 +0000
+++ openerp/report/render/rml2html/rml2html.py 2011-02-08 09:37:03 +0000
@@ -40,7 +40,7 @@
from lxml import etree
import copy
import utils
-from report.render.rml2pdf import utils
+from openerp.report.render.rml2pdf import utils
class _flowable(object):
def __init__(self, template, doc, localcontext = None):
=== modified file 'openerp/report/render/rml2pdf/customfonts.py'
--- bin/report/render/rml2pdf/customfonts.py 2010-12-20 05:48:43 +0000
+++ openerp/report/render/rml2pdf/customfonts.py 2011-02-08 09:37:03 +0000
@@ -26,7 +26,7 @@
import platform
from reportlab import rl_config
-from tools import config
+from openerp.tools import config
"""This module allows the mapping of some system-available TTF fonts to
the reportlab engine.
=== modified file 'openerp/report/render/rml2pdf/trml2pdf.py'
--- bin/report/render/rml2pdf/trml2pdf.py 2011-01-04 10:13:35 +0000
+++ openerp/report/render/rml2pdf/trml2pdf.py 2011-02-08 09:37:03 +0000
@@ -33,9 +33,9 @@
from lxml import etree
import base64
from reportlab.platypus.doctemplate import ActionFlowable
-from tools.safe_eval import safe_eval as eval
+from openerp.tools.safe_eval import safe_eval as eval
from reportlab.lib.units import inch,cm,mm
-from tools.misc import file_open
+from openerp.tools.misc import file_open
from reportlab.pdfbase import pdfmetrics
try:
=== modified file 'openerp/report/render/rml2pdf/utils.py'
--- bin/report/render/rml2pdf/utils.py 2010-12-28 11:09:29 +0000
+++ openerp/report/render/rml2pdf/utils.py 2011-02-08 09:37:03 +0000
@@ -43,9 +43,9 @@
import re
import reportlab
-import tools
-from tools.safe_eval import safe_eval as eval
-from tools import ustr
+import openerp.tools as tools
+from openerp.tools.safe_eval import safe_eval as eval
+from openerp.tools.misc import ustr
_regex = re.compile('\[\[(.+?)\]\]')
=== modified file 'openerp/report/render/rml2txt/utils.py'
--- bin/report/render/rml2txt/utils.py 2010-05-03 23:49:53 +0000
+++ openerp/report/render/rml2txt/utils.py 2011-02-08 09:37:03 +0000
@@ -23,7 +23,7 @@
import reportlab
import reportlab.lib.units
from lxml import etree
-from tools.safe_eval import safe_eval as eval
+from openerp.tools.safe_eval import safe_eval as eval
_regex = re.compile('\[\[(.+?)\]\]')
=== modified file 'openerp/report/report_sxw.py'
--- bin/report/report_sxw.py 2011-01-10 13:28:32 +0000
+++ openerp/report/report_sxw.py 2011-02-08 09:37:03 +0000
@@ -29,12 +29,12 @@
from interface import report_rml
import preprocess
import logging
-import pooler
-import tools
+import openerp.pooler as pooler
+import openerp.tools as tools
import zipfile
import common
-from osv.fields import float as float_class, function as function_class
-from osv.orm import browse_record
+from openerp.osv.fields import float as float_class, function as function_class
+from openerp.osv.orm import browse_record
DT_FORMAT = '%Y-%m-%d'
DHM_FORMAT = '%Y-%m-%d %H:%M:%S'
=== modified file 'openerp/service/http_server.py'
--- bin/service/http_server.py 2011-01-18 23:50:33 +0000
+++ openerp/service/http_server.py 2011-02-08 09:37:03 +0000
@@ -31,10 +31,10 @@
"""
from websrv_lib import *
-import netsvc
+import openerp.netsvc as netsvc
import errno
import threading
-import tools
+import openerp.tools as tools
import posixpath
import urllib
import os
=== modified file 'openerp/service/netrpc_server.py'
--- bin/service/netrpc_server.py 2011-01-18 23:50:33 +0000
+++ openerp/service/netrpc_server.py 2011-02-08 09:37:03 +0000
@@ -30,9 +30,9 @@
import threading
import traceback
-import netsvc
-import tiny_socket
-import tools
+import openerp.netsvc as netsvc
+import openerp.tiny_socket as tiny_socket
+import openerp.tools as tools
class TinySocketClientThread(threading.Thread, netsvc.OpenERPDispatcher):
def __init__(self, sock, threads):
=== modified file 'openerp/service/security.py'
--- bin/service/security.py 2010-06-07 16:16:36 +0000
+++ openerp/service/security.py 2011-02-08 09:37:03 +0000
@@ -19,8 +19,8 @@
#
##############################################################################
-import pooler
-import tools
+import openerp.pooler as pooler
+import openerp.tools as tools
# When rejecting a password, hide the traceback
class ExceptionNoTb(Exception):
=== modified file 'openerp/service/web_services.py'
--- bin/service/web_services.py 2011-01-15 17:04:10 +0000
+++ openerp/service/web_services.py 2011-02-08 09:37:03 +0000
@@ -27,14 +27,14 @@
import time
import sys
import platform
-from tools.translate import _
-import addons
-import ir
-import netsvc
-import pooler
-import release
-import sql_db
-import tools
+from openerp.tools.translate import _
+import openerp.addons as addons
+import openerp.ir
+import openerp.netsvc as netsvc
+import openerp.pooler as pooler
+import openerp.release as release
+import openerp.sql_db as sql_db
+import openerp.tools as tools
import locale
import logging
from cStringIO import StringIO
@@ -327,8 +327,8 @@
def exp_migrate_databases(self,databases):
- from osv.orm import except_orm
- from osv.osv import except_osv
+ from openerp.osv.orm import except_orm
+ from openerp.osv.osv import except_osv
l = netsvc.Logger()
for db in databases:
@@ -441,7 +441,7 @@
return tools.misc.get_server_timezone()
def exp_get_available_updates(self, contract_id, contract_password):
- import tools.maintenance as tm
+ import openerp.tools.maintenance as tm
try:
rc = tm.remote_contract(contract_id, contract_password)
if not rc.id:
@@ -455,7 +455,7 @@
def exp_get_migration_scripts(self, contract_id, contract_password):
l = netsvc.Logger()
- import tools.maintenance as tm
+ import openerp.tools.maintenance as tm
try:
rc = tm.remote_contract(contract_id, contract_password)
if not rc.id:
@@ -564,7 +564,6 @@
return res
def exp_list_http_services(self):
- from service import http_server
return http_server.list_http_services()
def exp_check_connectivity(self):
=== modified file 'openerp/test/test_osv.py'
--- bin/test/test_osv.py 2010-10-01 16:54:11 +0000
+++ openerp/test/test_osv.py 2011-02-08 09:37:03 +0000
@@ -20,7 +20,7 @@
##############################################################################
import unittest
-from osv.query import Query
+from openerp.osv.query import Query
class QueryTestCase(unittest.TestCase):
=== modified file 'openerp/test/test_translate.py'
--- bin/test/test_translate.py 2010-11-16 12:43:28 +0000
+++ openerp/test/test_translate.py 2011-02-08 09:37:03 +0000
@@ -20,7 +20,7 @@
##############################################################################
import unittest
-from tools.translate import quote, unquote
+from openerp.tools.translate import quote, unquote
class TranslationToolsTestCase(unittest.TestCase):
=== modified file 'openerp/tools/__init__.py'
--- bin/tools/__init__.py 2011-01-26 16:50:30 +0000
+++ openerp/tools/__init__.py 2011-02-08 09:37:03 +0000
@@ -21,7 +21,7 @@
import copy
import win32
-from config import *
+from config import config
from misc import *
from convert import *
from translate import *
=== modified file 'openerp/tools/amount_to_text_en.py'
--- bin/tools/amount_to_text_en.py 2011-01-26 16:50:30 +0000
+++ openerp/tools/amount_to_text_en.py 2011-02-08 09:37:03 +0000
@@ -22,7 +22,7 @@
#-------------------------------------------------------------
#ENGLISH
#-------------------------------------------------------------
-from tools.translate import _
+from translate import _
to_19 = ( 'Zero', 'One', 'Two', 'Three', 'Four', 'Five', 'Six',
'Seven', 'Eight', 'Nine', 'Ten', 'Eleven', 'Twelve', 'Thirteen',
@@ -99,13 +99,13 @@
Example:
1654: thousands six cent cinquante-quatre.
"""
- import netsvc
+ import openerp.loglevels as loglevels
# if nbr > 10000000:
# netsvc.Logger().notifyChannel('translate', netsvc.LOG_WARNING, _("Number too large '%d', can not translate it"))
# return str(nbr)
if not _translate_funcs.has_key(lang):
- netsvc.Logger().notifyChannel('translate', netsvc.LOG_WARNING, _("no translation function found for lang: '%s'" % (lang,)))
+ loglevels.Logger().notifyChannel('translate', loglevels.LOG_WARNING, _("no translation function found for lang: '%s'" % (lang,)))
#TODO: (default should be en) same as above
lang = 'en'
return _translate_funcs[lang](abs(nbr), currency)
=== modified file 'openerp/tools/config.py'
--- bin/tools/config.py 2011-02-07 17:03:17 +0000
+++ openerp/tools/config.py 2011-02-08 09:37:03 +0000
@@ -23,9 +23,10 @@
import optparse
import os
import sys
-import netsvc
+import openerp
+import openerp.loglevels as loglevels
import logging
-import release
+import openerp.release as release
def check_ssl():
try:
@@ -102,7 +103,7 @@
self.config_file = fname
self.has_ssl = check_ssl()
- self._LOGLEVELS = dict([(getattr(netsvc, 'LOG_%s' % x), getattr(logging, x))
+ self._LOGLEVELS = dict([(getattr(loglevels, 'LOG_%s' % x), getattr(logging, x))
for x in ('CRITICAL', 'ERROR', 'WARNING', 'INFO', 'TEST', 'DEBUG', 'DEBUG_RPC', 'DEBUG_SQL', 'DEBUG_RPC_ANSWER','NOTSET')])
version = "%s %s" % (release.description, release.version)
@@ -226,6 +227,7 @@
security.add_option('--no-database-list', action="store_false", dest='list_db', help="disable the ability to return the list of databases")
parser.add_option_group(security)
+<<<<<<< TREE
# Advanced options
group = optparse.OptionGroup(parser, "Advanced options")
group.add_option("--cache-timeout", dest="cache_timeout",
@@ -238,6 +240,12 @@
def parse_config(self):
opt = self.parser.parse_args()[0]
+=======
+ self.parse_config()
+
+ def parse_config(self, args=[]):
+ opt = self.parser.parse_args(args)[0]
+>>>>>>> MERGE-SOURCE
def die(cond, msg):
if cond:
@@ -320,7 +328,7 @@
self.options['log_level'] = self._LOGLEVELS.get(self.options['log_level']) or int(self.options['log_level'])
if not self.options['root_path'] or self.options['root_path']=='None':
- self.options['root_path'] = os.path.abspath(os.path.dirname(sys.argv[0]))
+ self.options['root_path'] = os.path.dirname(openerp.__file__)
if not self.options['addons_path'] or self.options['addons_path']=='None':
self.options['addons_path'] = os.path.join(self.options['root_path'], 'addons')
@@ -500,8 +508,3 @@
config = configmanager()
-# FIXME:following line should be called explicitly by the server
-# when it starts, to allow doing 'import tools.config' from
-# other python executables without parsing *their* args.
-config.parse_config()
-
=== modified file 'openerp/tools/convert.py'
--- bin/tools/convert.py 2011-01-26 16:50:30 +0000
+++ openerp/tools/convert.py 2011-02-08 09:37:03 +0000
@@ -28,7 +28,7 @@
# for eval context:
import time
-import release
+import openerp.release as release
try:
import pytz
except:
@@ -41,21 +41,20 @@
from datetime import datetime, timedelta
from lxml import etree
import misc
-import netsvc
-import osv
-import pooler
+import openerp.loglevels as loglevels
+import openerp.pooler as pooler
from config import config
-from tools.translate import _
+from translate import _
from yaml_import import convert_yaml_import
# List of etree._Element subclasses that we choose to ignore when parsing XML.
-from tools import SKIPPED_ELEMENT_TYPES
+from misc import SKIPPED_ELEMENT_TYPES
# Import of XML records requires the unsafe eval as well,
# almost everywhere, which is ok because it supposedly comes
# from trusted data, but at least we make it obvious now.
unsafe_eval = eval
-from tools.safe_eval import safe_eval as eval
+from safe_eval import safe_eval as eval
class ConvertError(Exception):
def __init__(self, doc, orig_excpt):
@@ -541,6 +540,7 @@
id = _eval_xml(self, rec[0], self.pool, cr, self.uid, self.idref)
uid = self.get_uid(cr, self.uid, data_node, rec)
+ import openerp.netsvc as netsvc
wf_service = netsvc.LocalService("workflow")
wf_service.trg_validate(uid, model,
id,
@@ -688,7 +688,7 @@
rec_src = rec.get("search",'').encode('utf8')
rec_src_count = rec.get("count")
- severity = rec.get("severity",'').encode('ascii') or netsvc.LOG_ERROR
+ severity = rec.get("severity",'').encode('ascii') or loglevels.LOG_ERROR
rec_string = rec.get("string",'').encode('utf8') or 'unknown'
ids = None
@@ -825,6 +825,7 @@
else:
f_val = _eval_xml(self,field, self.pool, cr, self.uid, self.idref)
if model._columns.has_key(f_name):
+ import openerp.osv as osv
if isinstance(model._columns[f_name], osv.fields.integer):
f_val = int(f_val)
res[f_name] = f_val
@@ -964,9 +965,9 @@
try:
relaxng.assert_(doc)
except Exception:
- logger = netsvc.Logger()
- logger.notifyChannel('init', netsvc.LOG_ERROR, 'The XML file does not fit the required schema !')
- logger.notifyChannel('init', netsvc.LOG_ERROR, misc.ustr(relaxng.error_log.last_error))
+ logger = loglevels.Logger()
+ logger.notifyChannel('init', loglevels.LOG_ERROR, 'The XML file does not fit the required schema !')
+ logger.notifyChannel('init', loglevels.LOG_ERROR, misc.ustr(relaxng.error_log.last_error))
raise
if idref is None:
=== modified file 'openerp/tools/misc.py'
--- bin/tools/misc.py 2011-02-03 23:00:23 +0000
+++ openerp/tools/misc.py 2011-02-08 09:37:03 +0000
@@ -55,10 +55,14 @@
except ImportError:
html2text = None
-import netsvc
+import openerp.loglevels as loglevels
from config import config
from lru import LRU
+# get_encodings, ustr and exception_to_unicode were originally from tools.misc.
+# There are moved to loglevels until we refactor tools.
+from openerp.loglevels import get_encodings, ustr, exception_to_unicode
+
_logger = logging.getLogger('tools')
# List of etree._Element subclasses that we choose to ignore when parsing XML.
@@ -67,7 +71,7 @@
# initialize a database with base/base.sql
def init_db(cr):
- import addons
+ import openerp.addons as addons
f = addons.get_module_resource('base', 'base.sql')
base_sql_file = file_open(f)
try:
@@ -200,7 +204,7 @@
@return: fileobject if pathinfo is False else (fileobject, filepath)
"""
- import addons
+ import openerp.addons as addons
adps = addons.ad_paths
rtp = os.path.normcase(os.path.abspath(config['root_path']))
@@ -434,10 +438,10 @@
"""
class WriteToLogger(object):
def __init__(self):
- self.logger = netsvc.Logger()
+ self.logger = loglevels.Logger()
def write(self, s):
- self.logger.notifyChannel('email_send', netsvc.LOG_DEBUG, s)
+ self.logger.notifyChannel('email_send', loglevels.LOG_DEBUG, s)
if openobject_id:
message['Message-Id'] = generate_tracking_message_id(openobject_id)
@@ -841,74 +845,6 @@
def to_xml(s):
return s.replace('&','&').replace('<','<').replace('>','>')
-def get_encodings(hint_encoding='utf-8'):
- fallbacks = {
- 'latin1': 'latin9',
- 'iso-8859-1': 'iso8859-15',
- 'cp1252': '1252',
- }
- if hint_encoding:
- yield hint_encoding
- if hint_encoding.lower() in fallbacks:
- yield fallbacks[hint_encoding.lower()]
-
- # some defaults (also taking care of pure ASCII)
- for charset in ['utf8','latin1']:
- if not (hint_encoding) or (charset.lower() != hint_encoding.lower()):
- yield charset
-
- from locale import getpreferredencoding
- prefenc = getpreferredencoding()
- if prefenc and prefenc.lower() != 'utf-8':
- yield prefenc
- prefenc = fallbacks.get(prefenc.lower())
- if prefenc:
- yield prefenc
-
-
-def ustr(value, hint_encoding='utf-8'):
- """This method is similar to the builtin `str` method, except
- it will return unicode() string.
-
- @param value: the value to convert
- @param hint_encoding: an optional encoding that was detected
- upstream and should be tried first to
- decode ``value``.
-
- @rtype: unicode
- @return: unicode string
- """
- if isinstance(value, Exception):
- return exception_to_unicode(value)
-
- if isinstance(value, unicode):
- return value
-
- if not isinstance(value, basestring):
- try:
- return unicode(value)
- except Exception:
- raise UnicodeError('unable to convert %r' % (value,))
-
- for ln in get_encodings(hint_encoding):
- try:
- return unicode(value, ln)
- except Exception:
- pass
- raise UnicodeError('unable to convert %r' % (value,))
-
-
-def exception_to_unicode(e):
- if (sys.version_info[:2] < (2,6)) and hasattr(e, 'message'):
- return ustr(e.message)
- if hasattr(e, 'args'):
- return "\n".join((ustr(a) for a in e.args))
- try:
- return ustr(e)
- except Exception:
- return u"Unknown message"
-
-
# to be compatible with python 2.4
import __builtin__
if not hasattr(__builtin__, 'all'):
@@ -1077,7 +1013,7 @@
return "%0.2f %s" % (s, units[i])
def logged(f):
- from tools.func import wraps
+ from func import wraps
@wraps(f)
def wrapper(*args, **kwargs):
@@ -1094,7 +1030,7 @@
vector.append(' result: %s' % pformat(res))
vector.append(' time delta: %s' % (time.time() - timeb4))
- netsvc.Logger().notifyChannel('logged', netsvc.LOG_DEBUG, '\n'.join(vector))
+ loglevels.Logger().notifyChannel('logged', loglevels.LOG_DEBUG, '\n'.join(vector))
return res
return wrapper
@@ -1104,7 +1040,7 @@
self.fname = fname
def __call__(self, f):
- from tools.func import wraps
+ from func import wraps
@wraps(f)
def wrapper(*args, **kwargs):
@@ -1300,7 +1236,7 @@
try:
import pytz
except Exception:
- netsvc.Logger().notifyChannel("detect_server_timezone", netsvc.LOG_WARNING,
+ loglevels.Logger().notifyChannel("detect_server_timezone", loglevels.LOG_WARNING,
"Python pytz module is not available. Timezone will be set to UTC by default.")
return 'UTC'
@@ -1334,14 +1270,14 @@
if value:
try:
tz = pytz.timezone(value)
- netsvc.Logger().notifyChannel("detect_server_timezone", netsvc.LOG_INFO,
+ loglevels.Logger().notifyChannel("detect_server_timezone", loglevels.LOG_INFO,
"Using timezone %s obtained from %s." % (tz.zone,source))
return value
except pytz.UnknownTimeZoneError:
- netsvc.Logger().notifyChannel("detect_server_timezone", netsvc.LOG_WARNING,
+ loglevels.Logger().notifyChannel("detect_server_timezone", loglevels.LOG_WARNING,
"The timezone specified in %s (%s) is invalid, ignoring it." % (source,value))
- netsvc.Logger().notifyChannel("detect_server_timezone", netsvc.LOG_WARNING,
+ loglevels.Logger().notifyChannel("detect_server_timezone", loglevels.LOG_WARNING,
"No valid timezone could be detected, using default UTC timezone. You can specify it explicitly with option 'timezone' in the server configuration.")
return 'UTC'
=== modified file 'openerp/tools/test_reports.py'
--- bin/tools/test_reports.py 2011-01-04 08:15:08 +0000
+++ openerp/tools/test_reports.py 2011-02-08 09:37:03 +0000
@@ -25,11 +25,11 @@
through the code of yaml tests.
"""
-import netsvc
-import tools
+import openerp.netsvc as netsvc
+import openerp.tools as tools
import logging
-import pooler
-from tools.safe_eval import safe_eval
+import openerp.pooler as pooler
+from openerp.tools.safe_eval import safe_eval
from subprocess import Popen, PIPE
import os
import tempfile
=== modified file 'openerp/tools/translate.py'
--- bin/tools/translate.py 2011-02-03 23:00:23 +0000
+++ openerp/tools/translate.py 2011-02-08 09:37:03 +0000
@@ -26,7 +26,7 @@
import itertools
import locale
import os
-import pooler
+import openerp.pooler as pooler
import re
import logging
import tarfile
@@ -37,10 +37,9 @@
from datetime import datetime
from lxml import etree
-import tools
-import netsvc
-from tools.misc import UpdateableStr
-from tools.misc import SKIPPED_ELEMENT_TYPES
+import misc
+from misc import UpdateableStr
+from misc import SKIPPED_ELEMENT_TYPES
_LOCALE2WIN32 = {
'af_ZA': 'Afrikaans_South Africa',
@@ -353,7 +352,7 @@
return type, name, res_id, source, trad
def write_infos(self, modules):
- import release
+ import openerp.release as release
self.buffer.write("# Translation of %(project)s.\n" \
"# This file contains the translation of the following modules:\n" \
"%(modules)s" \
@@ -418,7 +417,7 @@
writer.writerow(row)
elif format == 'po':
rows.pop(0)
- writer = tools.TinyPoFile(buffer)
+ writer = TinyPoFile(buffer)
writer.write_infos(modules)
# we now group the translations by source. That means one translation per source.
@@ -587,6 +586,7 @@
push_translation(module, 'view', encode(obj.model), 0, t)
elif model=='ir.actions.wizard':
service_name = 'wizard.'+encode(obj.wiz_name)
+ import openerp.netsvc as netsvc
if netsvc.Service._services.get(service_name):
obj2 = netsvc.Service._services[service_name]
for state_name, state_def in obj2.states.iteritems():
@@ -677,7 +677,7 @@
report_type = "xsl"
if fname and obj.report_type in ('pdf', 'xsl'):
try:
- report_file = tools.file_open(fname)
+ report_file = misc.file_open(fname)
try:
d = etree.parse(report_file)
for t in parse_func(d.iter()):
@@ -726,8 +726,8 @@
def get_module_from_path(path, mod_paths=None):
if not mod_paths:
# First, construct a list of possible paths
- def_path = os.path.abspath(os.path.join(tools.config['root_path'], 'addons')) # default addons path (base)
- ad_paths= map(lambda m: os.path.abspath(m.strip()),tools.config['addons_path'].split(','))
+ def_path = os.path.abspath(os.path.join(config.config['root_path'], 'addons')) # default addons path (base)
+ ad_paths= map(lambda m: os.path.abspath(m.strip()),config.config['addons_path'].split(','))
mod_paths=[def_path]
for adp in ad_paths:
mod_paths.append(adp)
@@ -745,9 +745,9 @@
installed_modids = modobj.search(cr, uid, [('state', '=', 'installed')])
installed_modules = map(lambda m: m['name'], modobj.read(cr, uid, installed_modids, ['name']))
- root_path = os.path.join(tools.config['root_path'], 'addons')
+ root_path = os.path.join(config.config['root_path'], 'addons')
- apaths = map(os.path.abspath, map(str.strip, tools.config['addons_path'].split(',')))
+ apaths = map(os.path.abspath, map(str.strip, config.config['addons_path'].split(',')))
if root_path in apaths:
path_list = apaths
else :
@@ -755,7 +755,7 @@
# Also scan these non-addon paths
for bin_path in ['osv', 'report' ]:
- path_list.append(os.path.join(tools.config['root_path'], bin_path))
+ path_list.append(os.path.join(config.config['root_path'], bin_path))
logger.debug("Scanning modules at paths: ", path_list)
@@ -772,7 +772,7 @@
is_mod_installed = module in installed_modules
if (('all' in modules) or (module in modules)) and is_mod_installed:
logger.debug("Scanning code of %s at module: %s", frelativepath, module)
- src_file = tools.file_open(fabsolutepath, subdir='')
+ src_file = misc.file_open(fabsolutepath, subdir='')
try:
code_string = src_file.read()
finally:
@@ -816,7 +816,7 @@
for path in path_list:
logger.debug("Scanning files of modules at %s", path)
- for root, dummy, files in tools.osutil.walksymlinks(path):
+ for root, dummy, files in osutil.walksymlinks(path):
for fname in itertools.chain(fnmatch.filter(files, '*.py')):
export_code_terms_from_file(fname, path, root, 'code')
for fname in itertools.chain(fnmatch.filter(files, '*.mako')):
@@ -860,7 +860,7 @@
lang_obj = pool.get('res.lang')
trans_obj = pool.get('ir.translation')
model_data_obj = pool.get('ir.model.data')
- iso_lang = tools.get_iso_codes(lang)
+ iso_lang = misc.get_iso_codes(lang)
try:
uid = 1
ids = lang_obj.search(cr, uid, [('code','=', lang)])
=== modified file 'openerp/tools/yaml_import.py'
--- bin/tools/yaml_import.py 2011-01-26 16:50:30 +0000
+++ openerp/tools/yaml_import.py 2011-02-08 09:37:03 +0000
@@ -4,8 +4,7 @@
from datetime import datetime, timedelta
import logging
-import pooler
-import netsvc
+import openerp.pooler as pooler
import misc
from config import config
import yaml_tag
@@ -14,7 +13,7 @@
# YAML import needs both safe and unsafe eval, but let's
# default to /safe/.
unsafe_eval = eval
-from tools.safe_eval import safe_eval as eval
+from safe_eval import safe_eval as eval
logger_channel = 'tests'
@@ -297,7 +296,7 @@
return record_dict
def process_record(self, node):
- import osv
+ import openerp.osv as osv
record, fields = node.items()[0]
model = self.get_model(record.model)
if isinstance(model, osv.osv.osv_memory):
@@ -448,6 +447,7 @@
signals=[x['signal'] for x in self.cr.dictfetchall()]
if workflow.action not in signals:
raise YamlImportException('Incorrect action %s. No such action defined' % workflow.action)
+ import openerp.netsvc as netsvc
wf_service = netsvc.LocalService("workflow")
wf_service.trg_validate(uid, workflow.model, id, workflow.action, self.cr)
=== modified file 'openerp/wizard/__init__.py'
--- bin/wizard/__init__.py 2010-02-16 06:31:14 +0000
+++ openerp/wizard/__init__.py 2011-02-08 09:37:03 +0000
@@ -19,18 +19,18 @@
#
##############################################################################
-import netsvc
-from tools import copy
-from tools.misc import UpdateableStr, UpdateableDict
-from tools.translate import translate
+import openerp.netsvc as netsvc
+from openerp.tools import copy
+from openerp.tools.misc import UpdateableStr, UpdateableDict
+from openerp.tools.translate import translate
from lxml import etree
-import ir
-import pooler
+import openerp.ir as ir
+import openerp.pooler as pooler
-from osv.osv import except_osv
-from osv.orm import except_orm
-from netsvc import Logger, LOG_ERROR
+from openerp.osv.osv import except_osv
+from openerp.osv.orm import except_orm
+from openerp.netsvc import Logger, LOG_ERROR
import sys
class except_wizard(Exception):
=== modified file 'openerp/workflow/instance.py'
--- bin/workflow/instance.py 2010-06-18 10:16:41 +0000
+++ openerp/workflow/instance.py 2011-02-08 09:37:03 +0000
@@ -22,8 +22,8 @@
import wkf_logs
import workitem
-import netsvc
-import pooler
+import openerp.netsvc as netsvc
+import openerp.pooler as pooler
def create(cr, ident, wkf_id):
(uid,res_type,res_id) = ident
=== modified file 'openerp/workflow/wkf_expr.py'
--- bin/workflow/wkf_expr.py 2010-10-13 21:53:40 +0000
+++ openerp/workflow/wkf_expr.py 2011-02-08 09:37:03 +0000
@@ -20,10 +20,10 @@
##############################################################################
import sys
-import netsvc
-import osv as base
-import pooler
-from tools.safe_eval import safe_eval as eval
+import openerp.netsvc as netsvc
+import openerp.osv as base
+import openerp.pooler as pooler
+from openerp.tools.safe_eval import safe_eval as eval
class Env(dict):
def __init__(self, cr, uid, model, ids):
=== modified file 'openerp/workflow/wkf_logs.py'
--- bin/workflow/wkf_logs.py 2009-10-20 10:52:23 +0000
+++ openerp/workflow/wkf_logs.py 2011-02-08 09:37:03 +0000
@@ -22,7 +22,7 @@
#
# May be uncommented to logs workflows modifications
#
-import netsvc
+import openerp.netsvc as netsvc
def log(cr,ident,act_id,info=''):
return
=== modified file 'openerp/workflow/wkf_service.py'
--- bin/workflow/wkf_service.py 2009-10-20 10:52:23 +0000
+++ openerp/workflow/wkf_service.py 2011-02-08 09:37:03 +0000
@@ -23,8 +23,8 @@
import workitem
import instance
-import netsvc
-import pooler
+import openerp.netsvc as netsvc
+import openerp.pooler as pooler
class workflow_service(netsvc.Service):
def __init__(self, name='workflow', audience='*'):
=== modified file 'openerp/workflow/workitem.py'
--- bin/workflow/workitem.py 2010-06-18 10:16:41 +0000
+++ openerp/workflow/workitem.py 2011-02-08 09:37:03 +0000
@@ -24,7 +24,7 @@
# cr.execute('delete from wkf_triggers where model=%s and res_id=%s', (res_type,res_id))
#
-import netsvc
+import openerp.netsvc as netsvc
import instance
import wkf_expr
Follow ups