diff --git a/openerp/netsvc.py b/openerp/netsvc.py index ef72ba179f2..6b66830b75e 100644 --- a/openerp/netsvc.py +++ b/openerp/netsvc.py @@ -130,38 +130,12 @@ def init_logger(): handler.setFormatter(formatter) # Configure handlers - default_config = [ - 'openerp.netsvc.rpc.request:INFO', - 'openerp.netsvc.rpc.response:INFO', - 'openerp.addons.web.http:INFO', - 'openerp.sql_db:INFO', - ':INFO', - ] - - if tools.config['log_level'] == 'info': - pseudo_config = [] - elif tools.config['log_level'] == 'debug_rpc': - pseudo_config = ['openerp:DEBUG','openerp.netsvc.rpc.request:DEBUG'] - elif tools.config['log_level'] == 'debug_rpc_answer': - pseudo_config = ['openerp:DEBUG','openerp.netsvc.rpc.request:DEBUG', 'openerp.netsvc.rpc.response:DEBUG'] - elif tools.config['log_level'] == 'debug': - pseudo_config = ['openerp:DEBUG'] - elif tools.config['log_level'] == 'test': - pseudo_config = ['openerp:TEST'] - elif tools.config['log_level'] == 'warn': - pseudo_config = ['openerp:WARNING'] - elif tools.config['log_level'] == 'error': - pseudo_config = ['openerp:ERROR'] - elif tools.config['log_level'] == 'critical': - pseudo_config = ['openerp:CRITICAL'] - elif tools.config['log_level'] == 'debug_sql': - pseudo_config = ['openerp.sql_db:DEBUG'] - else: - pseudo_config = [] + pseudo_config = PSEUDOCONFIG_MAPPER.get(tools.config['log_level'], []) logconfig = tools.config['log_handler'] - for logconfig_item in default_config + pseudo_config + logconfig: + logging_configurations = DEFAULT_LOG_CONFIGURATION + pseudo_config + logconfig + for logconfig_item in logging_configurations: loggername, level = logconfig_item.split(':') level = getattr(logging, level, logging.INFO) logger = logging.getLogger(loggername) @@ -171,9 +145,29 @@ def init_logger(): if loggername != '': logger.propagate = False - for logconfig_item in default_config + pseudo_config + logconfig: + for logconfig_item in logging_configurations: _logger.debug('logger level set: "%s"', logconfig_item) +DEFAULT_LOG_CONFIGURATION = [ + 'openerp.workflow.workitem:WARNING', + 'openerp.netsvc.rpc.request:INFO', + 'openerp.netsvc.rpc.response:INFO', + 'openerp.addons.web.http:INFO', + 'openerp.sql_db:INFO', + ':INFO', +] +PSEUDOCONFIG_MAPPER = { + 'debug_rpc_answer': ['openerp:DEBUG','openerp.netsvc.rpc.request:DEBUG', 'openerp.netsvc.rpc.response:DEBUG'], + 'debug_rpc': ['openerp:DEBUG','openerp.netsvc.rpc.request:DEBUG'], + 'debug': ['openerp:DEBUG'], + 'debug_sql': ['openerp.sql_db:DEBUG'], + 'test': ['openerp:TEST'], + 'info': [], + 'warn': ['openerp:WARNING'], + 'error': ['openerp:ERROR'], + 'critical': ['openerp:CRITICAL'], +} + # A alternative logging scheme for automated runs of the # server intended to test it. def init_alternative_logger(): diff --git a/openerp/workflow/common.py b/openerp/workflow/common.py deleted file mode 100644 index fc29419721a..00000000000 --- a/openerp/workflow/common.py +++ /dev/null @@ -1,28 +0,0 @@ -# -*- coding: utf-8 -*- -############################################################################## -# -# OpenERP, Open Source Management Solution -# Copyright (C) 2004-2009 Tiny SPRL (). -# -# 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 . -# -############################################################################## - -class except_wkf(Exception): - def __init__(self, name, value): - self.name = name - self.value = value - -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: - diff --git a/openerp/workflow/wkf_logs.py b/openerp/workflow/wkf_logs.py deleted file mode 100644 index 9463fe61814..00000000000 --- a/openerp/workflow/wkf_logs.py +++ /dev/null @@ -1,39 +0,0 @@ -# -*- coding: utf-8 -*- -############################################################################## -# -# OpenERP, Open Source Management Solution -# Copyright (C) 2004-2009 Tiny SPRL (). -# -# 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 . -# -############################################################################## - -# -# May be uncommented to logs workflows modifications -# - -def log(cr,ident,act_id,info=''): - return - # msg = """ - #res_type: %r - #res_id: %d - #uid: %d - #act_id: %d - #info: %s - #""" % (ident[1], ident[2], ident[0], act_id, info) - - #cr.execute('insert into wkf_logs (res_type, res_id, uid, act_id, time, info) values (%s,%s,%s,%s,current_time,%s)', (ident[1],int(ident[2]),int(ident[0]),int(act_id),info)) - -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: - diff --git a/openerp/workflow/workitem.py b/openerp/workflow/workitem.py index 0f94dfa788d..a5639fa0c7c 100644 --- a/openerp/workflow/workitem.py +++ b/openerp/workflow/workitem.py @@ -23,11 +23,13 @@ # TODO: # cr.execute('delete from wkf_triggers where model=%s and res_id=%s', (res_type,res_id)) # +import logging import instance import wkf_expr -import wkf_logs + +logger = logging.getLogger(__name__) def create(cr, act_datas, inst_id, ident, stack): for act in act_datas: @@ -36,34 +38,29 @@ def create(cr, act_datas, inst_id, ident, stack): cr.execute("insert into wkf_workitem (id,act_id,inst_id,state) values (%s,%s,%s,'active')", (id_new, act['id'], inst_id)) cr.execute('select * from wkf_workitem where id=%s',(id_new,)) res = cr.dictfetchone() - wkf_logs.log(cr,ident,act['id'],'active') + logger.info('Created workflow item in activity %s', + act['id'], extra={'ident': ident}) process(cr, res, ident, stack=stack) def process(cr, workitem, ident, signal=None, force_running=False, stack=None): - if stack is None: - raise 'Error !!!' - result = True + assert stack is not None + cr.execute('select * from wkf_activity where id=%s', (workitem['act_id'],)) activity = cr.dictfetchone() triggers = False - if workitem['state']=='active': + if workitem['state'] == 'active': triggers = True - result = _execute(cr, workitem, activity, ident, stack) - if not result: + if not _execute(cr, workitem, activity, ident, stack): return False - if workitem['state']=='running': - pass - - if workitem['state']=='complete' or force_running: + if force_running or workitem['state'] == 'complete': ok = _split_test(cr, workitem, activity['split_mode'], ident, signal, stack) triggers = triggers and not ok if triggers: cr.execute('select * from wkf_transition where act_from=%s', (workitem['act_id'],)) - alltrans = cr.dictfetchall() - for trans in alltrans: + for trans in cr.dictfetchall(): if trans['trigger_model']: ids = wkf_expr._eval_expr(cr,ident,workitem,trans['trigger_expr_id']) for res_id in ids: @@ -71,7 +68,7 @@ def process(cr, workitem, ident, signal=None, force_running=False, stack=None): id =cr.fetchone()[0] cr.execute('insert into wkf_triggers (model,res_id,instance_id,workitem_id,id) values (%s,%s,%s,%s,%s)', (trans['trigger_model'],res_id,workitem['inst_id'], workitem['id'], id)) - return result + return True # ---------------------- PRIVATE FUNCS -------------------------------- @@ -79,7 +76,8 @@ def process(cr, workitem, ident, signal=None, force_running=False, stack=None): def _state_set(cr, workitem, activity, state, ident): cr.execute('update wkf_workitem set state=%s where id=%s', (state,workitem['id'])) workitem['state'] = state - wkf_logs.log(cr,ident,activity['id'],state) + logger.info("Changed state of work item %s to \"%s\" in activity %s", + workitem['id'], state, activity['id'], extra={'ident': ident}) def _execute(cr, workitem, activity, ident, stack): result = True @@ -146,8 +144,6 @@ def _execute(cr, workitem, activity, ident, stack): return result def _split_test(cr, workitem, split_mode, ident, signal=None, stack=None): - if stack is None: - raise 'Error !!!' cr.execute('select * from wkf_transition where act_from=%s', (workitem['act_id'],)) test = False transitions = []