diff --git a/MANIFEST.in b/MANIFEST.in index 86edb9c56ac..9f3f31af1f1 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -1,3 +1,4 @@ +include rpminstall_sh.txt include README include bin/import_xml.rng include bin/server.cert diff --git a/bin/netsvc.py b/bin/netsvc.py index 528b8853b29..770be34aaeb 100644 --- a/bin/netsvc.py +++ b/bin/netsvc.py @@ -154,22 +154,20 @@ def init_logger(): import os logger = logging.getLogger() + # create a format for log messages and dates + formatter = logging.Formatter('[%(asctime)s] %(levelname)s:%(name)s:%(message)s', '%a %b %d %Y %H:%M:%S') if tools.config['syslog']: # SysLog Handler if os.name == 'nt': - sysloghandler = logging.handlers.NTEventLogHandler("%s %s" % + handler = logging.handlers.NTEventLogHandler("%s %s" % (release.description, release.version)) else: - sysloghandler = logging.handlers.SysLogHandler('/dev/log') - formatter = logging.Formatter('%(application)s:%(uncoloredlevelname)s:%(name)s:%(message)s') - sysloghandler.setFormatter(formatter) - logger.addHandler(sysloghandler) + handler = logging.handlers.SysLogHandler('/dev/log') + formatter = logging.Formatter("%s %s" % (release.description, release.version) + ':%(levelname)s:%(name)s:%(message)s') - # create a format for log messages and dates - formatter = logging.Formatter('[%(asctime)s] %(levelname)s:%(name)s:%(message)s', '%a %b %d %Y %H:%M:%S') - if tools.config['logfile']: + elif tools.config['logfile']: # LogFile Handler logf = tools.config['logfile'] try: @@ -216,14 +214,6 @@ def init_logger(): class Logger(object): - def uncoloredlevelname(self, level): - # The level'names are globals to all loggers, so we must strip-off the - # color formatting for some specific logger (i.e: syslog) - levelname = logging.getLevelName(getattr(logging, level.upper(), 0)) - if levelname.startswith("\x1b["): - return levelname[10:-4] - return levelname - def notifyChannel(self, name, level, msg): log = logging.getLogger(name) @@ -231,19 +221,14 @@ class Logger(object): fct = lambda msg, *args, **kwargs: log.log(logging.DEBUG_RPC, msg, *args, **kwargs) setattr(log, LOG_DEBUG_RPC, fct) - extra = { - 'uncoloredlevelname': self.uncoloredlevelname(level), - 'application' : "%s %s" % (release.description, release.version), - } - level_method = getattr(log, level) result = tools.ustr(msg).strip().split('\n') if len(result)>1: for idx, s in enumerate(result): - level_method('[%02d]: %s' % (idx+1, s,), extra=extra) + level_method('[%02d]: %s' % (idx+1, s,)) elif result: - level_method(result[0], extra=extra) + level_method(result[0]) import tools init_logger() diff --git a/bin/openerp-server.py b/bin/openerp-server.py index 490faecd96d..f2938d0a87b 100644 --- a/bin/openerp-server.py +++ b/bin/openerp-server.py @@ -34,7 +34,10 @@ GNU Public Licence. #---------------------------------------------------------- # python imports #---------------------------------------------------------- -import sys, os, signal,pwd +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` diff --git a/bin/osv/orm.py b/bin/osv/orm.py index ce9ba327a47..b5e5e827ac2 100644 --- a/bin/osv/orm.py +++ b/bin/osv/orm.py @@ -94,6 +94,9 @@ class browse_null(object): def __nonzero__(self): return False + + def __unicode__(self): + return u'' # diff --git a/bin/release.py b/bin/release.py index 5f492e3d0ff..7a182f22e4c 100644 --- a/bin/release.py +++ b/bin/release.py @@ -30,7 +30,7 @@ OpenERP is a complete ERP and CRM. The main features are accounting (analytic and financial), stock management, sales and purchases management, tasks automation, marketing campaigns, help desk, POS, etc. Technical features include a distributed server, flexible workflows, an object database, a dynamic GUI, -customizable reports, and SOAP and XML-RPC interfaces. +customizable reports, and XML-RPC interfaces. ''' classifiers = """\ Development Status :: 5 - Production/Stable diff --git a/bin/report/report_sxw.py b/bin/report/report_sxw.py index 6f46d49d7f6..ee1555dbc0d 100644 --- a/bin/report/report_sxw.py +++ b/bin/report/report_sxw.py @@ -284,24 +284,21 @@ class rml_parse(object): oldtag = self.tag self._node.data = '' node = self._find_parent(self._node, [oldtag]) + ns = None if node: pp = node.parentNode ns = node.nextSibling pp.removeChild(node) - else: - pp=self._node - self._node = pp - lst='' - if isinstance(text,(str,unicode)): - lst = text.split('\n') -# lst = str(text).split('\n') # This is also acceptable, isn't it? - if lst and (not len(lst)): + self._node = pp + + lst = tools.ustr(text).split('\n') + if not (text and lst): return None nodes = [] for i in range(len(lst)): newnode = node.cloneNode(1) newnode.tagName=rml_tag - newnode.__dict__['childNodes'][0].__dict__['data'] = lst[i].decode('utf8') + newnode.childNodes[0].data = lst[i] if ns: pp.insertBefore(newnode, ns) else: diff --git a/bin/service/web_services.py b/bin/service/web_services.py index eef02528337..5ec9603dde5 100644 --- a/bin/service/web_services.py +++ b/bin/service/web_services.py @@ -245,14 +245,14 @@ class db(netsvc.Service): import pwd db_user = pwd.getpwuid(os.getuid())[0] if not db_user: - cr.execute("select usename from pg_user where usesysid=(select datdba from pg_database where datname=%s)", (tools.config["db_name"],)) + cr.execute("select decode(usename, 'escape') from pg_user where usesysid=(select datdba from pg_database where datname=%s)", (tools.config["db_name"],)) res = cr.fetchone() - db_user = res and res[0] + db_user = res and str(res[0]) if db_user: - cr.execute("select datname from pg_database where datdba=(select usesysid from pg_user where usename=%s) and datname not in ('template0', 'template1', 'postgres')", (db_user,)) + cr.execute("select decode(datname, 'escape') from pg_database where datdba=(select usesysid from pg_user where usename=%s) and datname not in ('template0', 'template1', 'postgres')", (db_user,)) else: - cr.execute("select datname from pg_database where datname not in('template0', 'template1','postgres')") - res = [name for (name,) in cr.fetchall()] + cr.execute("select decode(datname, 'escape') from pg_database where datname not in('template0', 'template1','postgres')") + res = [str(name) for (name,) in cr.fetchall()] cr.close() except: res = [] diff --git a/bin/tools/config.py b/bin/tools/config.py index dcf2c0e427a..e19c95e1660 100644 --- a/bin/tools/config.py +++ b/bin/tools/config.py @@ -179,6 +179,7 @@ class configmanager(object): (opt, args) = parser.parse_args() + assert not (bool(opt.syslog) and bool(opt.logfile)), "the syslog and logfile options are exclusive" assert not (opt.translate_in and (not opt.language or not opt.db_name)), "the i18n-import option cannot be used without the language (-l) and the database (-d) options" assert not (opt.translate_out and (not opt.db_name)), "the i18n-export option cannot be used without the database (-d) option" diff --git a/rpminstall_sh.txt b/rpminstall_sh.txt new file mode 100644 index 00000000000..0d88cc1dcf1 --- /dev/null +++ b/rpminstall_sh.txt @@ -0,0 +1,14 @@ +# +# This file is used by 'python setup.py bdist_rpm' +# You should not execute/call this file yourself. +# +# This script is used as the 'install' part of the RPM .spec file. +# +# Need to overwrite the install-part of the RPM to append the +# compression-suffix onto the filenames for the man-pages. +# +python setup.py install --root=$RPM_BUILD_ROOT --record=INSTALLED_FILES + +SUFFIX=gz +mv INSTALLED_FILES INSTALLED_FILES.orig +sed "s!\(/share/man/.*\)!\1.$SUFFIX!" INSTALLED_FILES.orig > INSTALLED_FILES diff --git a/setup.cfg b/setup.cfg new file mode 100644 index 00000000000..caf187e4c33 --- /dev/null +++ b/setup.cfg @@ -0,0 +1,17 @@ +[sdist] +formats=gztar + +[bdist] +formats=rpm + +[bdist_rpm] +release=1 + +requires=python >= 2.3 +#build-requires=python-devel >= 2.3 + +#doc_files = doc/* + +# Need to overwrite the install-part of the RPM to patch +# the filenames of the man pages. +install_script=rpminstall_sh.txt