X-Git-Url: http://git.inspyration.org/?a=blobdiff_plain;f=openerp%2Floglevels.py;h=75dca53bb6a993a3441e9ec98faa1c8f2572d06c;hb=d05d89192d0eb8384fab4e01ba6c5aa78d3c74ff;hp=f678afe62d61c7e866ff7874156ed1f4f3a4f606;hpb=5aca6a91fa2d686bd05c185431f82b4e66cf530f;p=odoo%2Fodoo.git diff --git a/openerp/loglevels.py b/openerp/loglevels.py index f678afe..75dca53 100644 --- a/openerp/loglevels.py +++ b/openerp/loglevels.py @@ -21,12 +21,8 @@ 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' @@ -34,32 +30,27 @@ 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') +_logger = logging.getLogger(__name__) + 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) + _logger.warning( + "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", - PendingDeprecationWarning, stacklevel=2) + _logger.warning( + "notifyChannel API shouldn't be used anymore, please use " + "the standard `logging` module instead.") from service.web_services import common - log = logging.getLogger(ustr(name)) + log = logging.getLogger(__name__ + '.deprecated.' + ustr(name)) - if level in [LOG_DEBUG_RPC, LOG_TEST] and not hasattr(log, level): + if level in [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) @@ -119,7 +110,7 @@ def get_encodings(hint_encoding='utf-8'): # some defaults (also taking care of pure ASCII) for charset in ['utf8','latin1']: - if not (hint_encoding) or (charset.lower() != hint_encoding.lower()): + if not hint_encoding or (charset.lower() != hint_encoding.lower()): yield charset from locale import getpreferredencoding @@ -130,17 +121,23 @@ def get_encodings(hint_encoding='utf-8'): 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 +def ustr(value, hint_encoding='utf-8', errors='strict'): + """This method is similar to the builtin `unicode`, except + that it may try multiple encodings to find one that works + for decoding `value`, and defaults to 'utf-8' first. + + :param: value: the value to convert + :param: hint_encoding: an optional encoding that was detecte + upstream and should be tried first to decode ``value``. + :param str errors: optional `errors` flag to pass to the unicode + built-in to indicate how illegal character values should be + treated when converting a string: 'strict', 'ignore' or 'replace' + (see ``unicode()`` constructor). + Passing anything other than 'strict' means that the first + encoding tried will be used, even if it's not the correct + one to use, so be careful! Ignored if value is not a string/unicode. + :raise: UnicodeError if value cannot be coerced to unicode + :return: unicode string representing the given value """ if isinstance(value, Exception): return exception_to_unicode(value) @@ -156,7 +153,7 @@ def ustr(value, hint_encoding='utf-8'): for ln in get_encodings(hint_encoding): try: - return unicode(value, ln) + return unicode(value, ln, errors=errors) except Exception: pass raise UnicodeError('unable to convert %r' % (value,))