diff --git a/openerp/addons/base/ir/ir_cron.py b/openerp/addons/base/ir/ir_cron.py index 4bf99cf9934..60aa685b6fc 100644 --- a/openerp/addons/base/ir/ir_cron.py +++ b/openerp/addons/base/ir/ir_cron.py @@ -135,6 +135,10 @@ class ir_cron(osv.osv): _logger.debug('%.3fs (%s, %s)' % (end_time - start_time, model_name, method_name)) except Exception, e: self._handle_callback_exception(cr, uid, model_name, method_name, args, job_id, e) + else: + msg = "Method `%s.%s` do not exist." % (model._name, method_name) \ + if model else "Model `%s` do not exist." % model._name + _logger.warning(msg) def _process_job(self, job_cr, job, cron_cr): """ Run a given job taking care of the repetition. diff --git a/openerpcommand/__init__.py b/openerpcommand/__init__.py index 5a243ded229..6d41c2842dc 100644 --- a/openerpcommand/__init__.py +++ b/openerpcommand/__init__.py @@ -8,6 +8,7 @@ from .bench_sale_mrp import BenchSaleMrp from . import common from . import conf # Not really server-side (in the `for` below). +from . import cron from . import drop from . import initialize from . import model @@ -19,7 +20,7 @@ from . import uninstall from . import update from . import web -command_list_server = (conf, drop, initialize, model, module, read, run_tests, +command_list_server = (conf, cron, drop, initialize, model, module, read, run_tests, scaffold, uninstall, update, web, ) command_list_client = (Call, Open, Show, ConsumeNothing, ConsumeMemory, diff --git a/openerpcommand/cron.py b/openerpcommand/cron.py new file mode 100644 index 00000000000..dc74e92ff09 --- /dev/null +++ b/openerpcommand/cron.py @@ -0,0 +1,55 @@ +""" +Run an OpenERP cron process. +""" + +import os + +import common + +def set_addons(args): + import openerp.tools.config + config = openerp.tools.config + + assert hasattr(args, 'addons') + if args.addons: + args.addons = args.addons.split(':') + else: + args.addons = [] + + config['addons_path'] = ','.join(args.addons) + +def run(args): + import openerp.cli.server + import openerp.tools.config + import openerp.service.cron + config = openerp.tools.config + + os.environ["TZ"] = "UTC" + set_addons(args) + args.database = args.database or [] + + config['log_handler'] = [':WARNING', 'openerp.addons.base.ir.ir_cron:DEBUG'] + + openerp.cli.server.check_root_user() + openerp.netsvc.init_logger() + #openerp.cli.server.report_configuration() + openerp.cli.server.configure_babel_localedata_path() + openerp.cli.server.setup_signal_handlers() + import openerp.addons.base + if args.database: + for db in args.database: + openerp.cli.server.preload_registry(db) + openerp.service.cron.start_service() + openerp.cli.server.quit_on_signals() + else: + print "No database given." + + +def add_parser(subparsers): + parser = subparsers.add_parser('cron', + description='Run an OpenERP cron process.') + common.add_addons_argument(parser) + parser.add_argument('--database', action='append', + help='Database for which cron jobs are processed (can be given repeated)') + + parser.set_defaults(run=run)