From 4e2beb23aeb6479900952f5a8b7cb4836505044c Mon Sep 17 00:00:00 2001 From: Launchpad Code Hosting Date: Tue, 2 Mar 2010 04:41:14 +0000 Subject: [PATCH 01/12] Launchpad automatic translations update. bzr revid: codehost@crowberry-20100302044114-053o70datjqoofrf --- bin/addons/base/i18n/hr.po | 4 ++-- bin/addons/base/i18n/ja.po | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/bin/addons/base/i18n/hr.po b/bin/addons/base/i18n/hr.po index 13a05cb4e67..c22c24df042 100644 --- a/bin/addons/base/i18n/hr.po +++ b/bin/addons/base/i18n/hr.po @@ -7,13 +7,13 @@ msgstr "" "Project-Id-Version: OpenERP Server 5.0.4\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2009-12-18 08:39+0000\n" -"PO-Revision-Date: 2010-02-28 05:54+0000\n" +"PO-Revision-Date: 2010-03-01 06:21+0000\n" "Last-Translator: goranc \n" "Language-Team: openerp-translators\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-03-01 05:00+0000\n" +"X-Launchpad-Export-Date: 2010-03-02 04:41+0000\n" "X-Generator: Launchpad (build Unknown)\n" "Language: hr\n" diff --git a/bin/addons/base/i18n/ja.po b/bin/addons/base/i18n/ja.po index 090650b1da2..caafbdf2a71 100644 --- a/bin/addons/base/i18n/ja.po +++ b/bin/addons/base/i18n/ja.po @@ -8,13 +8,13 @@ msgstr "" "Project-Id-Version: openobject-server\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2009-12-18 08:39+0000\n" -"PO-Revision-Date: 2010-02-28 05:56+0000\n" +"PO-Revision-Date: 2010-03-01 06:18+0000\n" "Last-Translator: OpenERP Administrators \n" "Language-Team: Japanese \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-03-01 05:00+0000\n" +"X-Launchpad-Export-Date: 2010-03-02 04:41+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. module: base From f4820709b6128674d9d2d0b281dbf1e519679f3d Mon Sep 17 00:00:00 2001 From: "mra (Open ERP)" Date: Tue, 2 Mar 2010 14:21:09 +0530 Subject: [PATCH 02/12] [IMP] Translation: remove get_iso dictionary which used in get_ico_codes method to get languages bzr revid: mra@tinyerp.com-20100302085109-63xxp3mqx7wuh4zs --- bin/tools/misc.py | 17 +---------------- 1 file changed, 1 insertion(+), 16 deletions(-) diff --git a/bin/tools/misc.py b/bin/tools/misc.py index 387b7c2d2a2..f105cd81256 100644 --- a/bin/tools/misc.py +++ b/bin/tools/misc.py @@ -883,23 +883,8 @@ if not hasattr(__builtin__, 'any'): __builtin__.any = any del any -get_iso = {'ca_ES':'ca', -'cs_CZ': 'cs', -'et_EE': 'et', -'sv_SE': 'sv', -'sq_AL': 'sq', -'uk_UA': 'uk', -'vi_VN': 'vi', -'af_ZA': 'af', -'be_BY': 'be', -'ja_JP': 'ja', -'ko_KR': 'ko' -} - def get_iso_codes(lang): - if lang in get_iso: - lang = get_iso[lang] - elif lang.find('_') != -1: + if lang.find('_') != -1: if lang.split('_')[0] == lang.split('_')[1].lower(): lang = lang.split('_')[0] return lang From e272ebf71328b82391e598824db2dffe51979e5c Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Tue, 2 Mar 2010 10:00:31 +0100 Subject: [PATCH 03/12] remove xml.* dependencies in py2exe packages list bzr revid: xmo@tinyerp.com-20100302090031-3b05optzvlycn88z --- setup.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/setup.py b/setup.py index 9c9d17989f5..d4fefa4d59e 100755 --- a/setup.py +++ b/setup.py @@ -171,10 +171,10 @@ options = { "optimize": 2, "dist_dir": 'dist', "packages": ["lxml", "lxml.builder", "lxml._elementpath", "lxml.etree", - "lxml.objectify", "decimal", "xml", "xml.dom", "xml.xpath", - "encodings","dateutil","wizard","pychart","PIL", - "pyparsing", "pydot","asyncore","asynchat", "reportlab", - "vobject", "HTMLParser", "select"], + "lxml.objectify", "decimal", "xml", "encodings", + "dateutil", "wizard", "pychart", "PIL", "pyparsing", + "pydot", "asyncore","asynchat", "reportlab", "vobject", + "HTMLParser", "select"], "excludes" : ["Tkconstants","Tkinter","tcl"], } } From c66be1d7f983826108aa8b84b832e50eb1068f5c Mon Sep 17 00:00:00 2001 From: Christophe Simonis Date: Tue, 2 Mar 2010 10:18:04 +0100 Subject: [PATCH 04/12] [IMP] change version number bzr revid: chs@tinyerp.com-20100302091804-1uk3nf2ir69u1x7e --- bin/release.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bin/release.py b/bin/release.py index 95801d58da1..f5fde69f1a9 100644 --- a/bin/release.py +++ b/bin/release.py @@ -21,8 +21,8 @@ ############################################################################## name = 'openerp-server' -version = '5.0.7' -major_version = '5.0' +version = '5.2dev' +major_version = '5.2' description = 'OpenERP Server' long_desc = '''\ OpenERP is a complete ERP and CRM. The main features are accounting (analytic From ea5cf5989f6649a672f55b133c23c893edb645c0 Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Tue, 2 Mar 2010 10:33:14 +0100 Subject: [PATCH 05/12] [imp] add PendingDeprecationWarning to netsvc.Logger API bzr revid: xmo@tinyerp.com-20100302093314-xos9vi0le2f249id --- bin/netsvc.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/bin/netsvc.py b/bin/netsvc.py index 49d68c8479e..a708ba5d97d 100644 --- a/bin/netsvc.py +++ b/bin/netsvc.py @@ -36,6 +36,7 @@ import threading import time import xmlrpclib import release +import warnings class Service(object): """ Base class for *Local* services @@ -211,8 +212,14 @@ def init_logger(): 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") + 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") from service.web_services import common log = logging.getLogger(tools.ustr(name)) From 0c67a510d777b7a4ecbfdc3aaf940619b82643b0 Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Tue, 2 Mar 2010 10:36:10 +0100 Subject: [PATCH 06/12] [imp] Add level names for debug2 and debug_rpc in logging bzr revid: xmo@tinyerp.com-20100302093610-f1pzzx1ck7e2i6jl --- bin/netsvc.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/bin/netsvc.py b/bin/netsvc.py index a708ba5d97d..4a48f540f30 100644 --- a/bin/netsvc.py +++ b/bin/netsvc.py @@ -138,7 +138,9 @@ LOG_CRITICAL = 'critical' # add new log level below DEBUG logging.DEBUG2 = logging.DEBUG - 1 +logging.addLevelName(logging.DEBUG2, 'DEBUG2') logging.DEBUG_RPC = logging.DEBUG2 - 1 +logging.addLevelName(logging.DEBUG_RPC, 'DEBUG_RPC') def init_logger(): import os From a7d00eb5f34893d06e9c1e8e5b3b3b6656be79a6 Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Tue, 2 Mar 2010 10:46:48 +0100 Subject: [PATCH 07/12] [imp] remove mostly unused DEBUG2 logging level bzr revid: xmo@tinyerp.com-20100302094648-gztszaux31oyfptv --- bin/netsvc.py | 11 +---------- bin/sql_db.py | 2 +- 2 files changed, 2 insertions(+), 11 deletions(-) diff --git a/bin/netsvc.py b/bin/netsvc.py index 4a48f540f30..4e3608fa7cf 100644 --- a/bin/netsvc.py +++ b/bin/netsvc.py @@ -130,16 +130,12 @@ class ExportService(object): LOG_NOTSET = 'notset' LOG_DEBUG_RPC = 'debug_rpc' LOG_DEBUG = 'debug' -LOG_DEBUG2 = 'debug2' LOG_INFO = 'info' LOG_WARNING = 'warn' LOG_ERROR = 'error' LOG_CRITICAL = 'critical' -# add new log level below DEBUG -logging.DEBUG2 = logging.DEBUG - 1 -logging.addLevelName(logging.DEBUG2, 'DEBUG2') -logging.DEBUG_RPC = logging.DEBUG2 - 1 +logging.DEBUG_RPC = logging.DEBUG - 2 logging.addLevelName(logging.DEBUG_RPC, 'DEBUG_RPC') def init_logger(): @@ -200,7 +196,6 @@ def init_logger(): mapping = { 'DEBUG_RPC': ('blue', 'white'), - 'DEBUG2': ('green', 'white'), 'DEBUG': ('blue', 'default'), 'INFO': ('green', 'default'), 'WARNING': ('yellow', 'default'), @@ -226,10 +221,6 @@ class Logger(object): log = logging.getLogger(tools.ustr(name)) - if level == LOG_DEBUG2 and not hasattr(log, level): - fct = lambda msg, *args, **kwargs: log.log(logging.DEBUG2, msg, *args, **kwargs) - setattr(log, LOG_DEBUG2, fct) - if level == LOG_DEBUG_RPC and not hasattr(log, level): fct = lambda msg, *args, **kwargs: log.log(logging.DEBUG_RPC, msg, *args, **kwargs) setattr(log, LOG_DEBUG_RPC, fct) diff --git a/bin/sql_db.py b/bin/sql_db.py index 2cc71408f5c..35492cdceda 100644 --- a/bin/sql_db.py +++ b/bin/sql_db.py @@ -61,7 +61,7 @@ re_from = re.compile('.* from "?([a-zA-Z_0-9]+)"? .*$'); re_into = re.compile('.* into "?([a-zA-Z_0-9]+)"? .*$'); -def log(msg, lvl=netsvc.LOG_DEBUG2): +def log(msg, lvl=netsvc.LOG_DEBUG): logger = netsvc.Logger() logger.notifyChannel('sql', lvl, msg) From 9150c0695ffbf7f76809f2811c27aaeb7177e087 Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Tue, 2 Mar 2010 10:58:09 +0100 Subject: [PATCH 08/12] [fix] specify PendingDeprecationWarning, not default UserWarning bzr revid: xmo@tinyerp.com-20100302095809-v2tdjb22ogok3y73 --- bin/netsvc.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/bin/netsvc.py b/bin/netsvc.py index 4e3608fa7cf..9f4cd0c8e39 100644 --- a/bin/netsvc.py +++ b/bin/netsvc.py @@ -211,12 +211,14 @@ def init_logger(): 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") + "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") + "the standard `logging` module instead", + PendingDeprecationWarning, stacklevel=2) from service.web_services import common log = logging.getLogger(tools.ustr(name)) From f8ef7598b6aee48b69aa27875f33c2bd8278272f Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Tue, 2 Mar 2010 10:58:40 +0100 Subject: [PATCH 09/12] [imp] remove crappy log() function from db_sql, migrate to logging's Logger bzr revid: xmo@tinyerp.com-20100302095840-bavk87douskr01af --- bin/sql_db.py | 31 +++++++++++++++---------------- 1 file changed, 15 insertions(+), 16 deletions(-) diff --git a/bin/sql_db.py b/bin/sql_db.py index 35492cdceda..9c6fd1c27a4 100644 --- a/bin/sql_db.py +++ b/bin/sql_db.py @@ -21,6 +21,7 @@ __all__ = ['db_connect', 'close_db'] +import logging import netsvc from psycopg2.extensions import ISOLATION_LEVEL_AUTOCOMMIT, ISOLATION_LEVEL_READ_COMMITTED, ISOLATION_LEVEL_SERIALIZABLE from psycopg2.psycopg1 import cursor as psycopg1cursor @@ -60,15 +61,11 @@ import re re_from = re.compile('.* from "?([a-zA-Z_0-9]+)"? .*$'); re_into = re.compile('.* into "?([a-zA-Z_0-9]+)"? .*$'); - -def log(msg, lvl=netsvc.LOG_DEBUG): - logger = netsvc.Logger() - logger.notifyChannel('sql', lvl, msg) - sql_counter = 0 class Cursor(object): IN_MAX = 1000 + __logger = logging.getLogger('db.cursor') def check(f): @wraps(f) @@ -102,15 +99,16 @@ class Cursor(object): # pool, preventing some operation on the database like dropping it. # This can also lead to a server overload. msg = "Cursor not closed explicitly\n" \ - "Cursor was created at %s:%s" % self.__caller - log(msg, netsvc.LOG_WARNING) + "Cursor was created at %s:%s" + self.__logger.warn(msg, *self.__caller) self.close() @check def execute(self, query, params=None): if '%d' in query or '%f' in query: - log(query, netsvc.LOG_WARNING) - log("SQL queries cannot contain %d or %f anymore. Use only %s", netsvc.LOG_WARNING) + self.__logger.warn(query) + self.__logger.warn("SQL queries cannot contain %d or %f anymore. " + "Use only %s") if params: query = query.replace('%d', '%s').replace('%f', '%s') @@ -124,16 +122,15 @@ class Cursor(object): logger= netsvc.Logger() logger.notifyChannel('sql_db', netsvc.LOG_ERROR, "Programming error: %s, in query %s" % (pe, query)) raise - except Exception, e: - log("bad query: %s" % self._obj.query) - log(e) + except Exception: + self.__logger.exception("bad query: %s", self._obj.query) raise if self.sql_log: delay = mdt.now() - now delay = delay.seconds * 1E6 + delay.microseconds - log("query: %s" % self._obj.query) + self.__logger.debug("query: %s", self._obj.query) self.sql_log_count+=1 res_from = re_from.match(query.lower()) if res_from: @@ -158,14 +155,16 @@ class Cursor(object): if sqllogs[type]: sqllogitems = sqllogs[type].items() sqllogitems.sort(key=lambda k: k[1][1]) - log("SQL LOG %s:" % (type,)) + self.__logger.debug("SQL LOG %s:", type) for r in sqllogitems: delay = timedelta(microseconds=r[1][1]) - log("table: %s: %s/%s" %(r[0], str(delay), r[1][0])) + self.__logger.debug("table: %s: %s/%s", + r[0], delay, r[1][0]) sum+= r[1][1] sqllogs[type].clear() sum = timedelta(microseconds=sum) - log("SUM %s:%s/%d [%d]" % (type, str(sum), self.sql_log_count, sql_counter)) + self.__logger.debug("SUM %s:%s/%d [%d]", + type, sum, self.sql_log_count, sql_counter) sqllogs[type].clear() process('from') process('into') From 56e1e6cd2a8f82c2b78c7a99f10eabe6305e75ec Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Tue, 2 Mar 2010 11:52:46 +0100 Subject: [PATCH 10/12] [fix] remove print spam bzr revid: xmo@tinyerp.com-20100302105246-slpkqkx65it1r7qr --- bin/service/security.py | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/bin/service/security.py b/bin/service/security.py index a1ae4fab311..c74ed2c7aba 100644 --- a/bin/service/security.py +++ b/bin/service/security.py @@ -30,12 +30,9 @@ class ExceptionNoTb(Exception): self.args = (msg, '') def login(db, login, password): - print 'login' pool = pooler.get_pool(db) user_obj = pool.get('res.users') - res = user_obj.login(db, login, password) - print 'login end' - return res + return user_obj.login(db, login, password) def check_super(passwd): if passwd == tools.config['admin_passwd']: From 7a29deab31a111f42abf08ea20306f93fecaa041 Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Tue, 2 Mar 2010 13:28:01 +0100 Subject: [PATCH 11/12] [fix] remove pyxml/python-xml Ubuntu hacks from openerp-server.py, had forgotten that bzr revid: xmo@tinyerp.com-20100302122801-2aetv6si7nxymz7e --- bin/openerp-server.py | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/bin/openerp-server.py b/bin/openerp-server.py index ea3a9c046bb..15f7ac670fa 100755 --- a/bin/openerp-server.py +++ b/bin/openerp-server.py @@ -37,17 +37,6 @@ import sys import os import signal import pwd -#---------------------------------------------------------- -# ubuntu 8.04 has obsoleted `pyxml` package and installs here. -# the path needs to be updated before any `import xml` -# TODO: remove PyXML dependencies, use lxml instead. -#---------------------------------------------------------- -_oldxml1 = '/usr/lib/python%s/site-packages/oldxml' % sys.version[:3] -_oldxml2 = '/usr/lib/python%s/dist-packages/oldxml' % sys.version[:3] -if os.path.exists(_oldxml1): - sys.path.insert(0,_oldxml1) -elif os.path.exists(_oldxml2): - sys.path.insert(0,_oldxml2) import release __author__ = release.author From 766edc36f821af56be2941b9585b6854185c595b Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Tue, 2 Mar 2010 14:12:57 +0100 Subject: [PATCH 12/12] [fix] remove mentions of python-xml, libxml2 and libxslt from doc/INSTALL; bump python dep from 2.4-2.5 to >2.5 < 3.O bzr revid: xmo@tinyerp.com-20100302131257-nomnqff50z5p643x --- doc/INSTALL | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/doc/INSTALL b/doc/INSTALL index 97684d6b3fd..47a75694d46 100644 --- a/doc/INSTALL +++ b/doc/INSTALL @@ -8,11 +8,9 @@ Required dependencies: You need the following software installed: - * Python 2.4 or 2.5 + * Python 2.5 or 2.6 * Postgresql 8.2 or above * Psycopg2 python module - * libxml2 and python bindings - * libxslt and python bindings * Reportlab pdf generation library for python * lxml python module * pytz python module @@ -29,7 +27,7 @@ for generating reports using non .jpg images, you need: For Debian-based distributions, the required packages can be installed with the following command: - #> apt-get install -y postgresql graphviz python-psycopg2 python-xml python-lxml python-libxml2 python-libxslt1 python-tz python-imaging + #> apt-get install -y postgresql graphviz python-psycopg2 python-lxml python-tz python-imaging For Fedora if they are not installed, install: @@ -37,8 +35,6 @@ python and postgresql uses yum or you can recover required packages on fedora web site in "core" or "extra" repository : postgresql-python -libxml2-python -libxslt-python python-lxml python-imaging python-psycopg2