diff --git a/openerp/cli/shell.py b/openerp/cli/shell.py index 3639615a2e8..f3c397d063f 100644 --- a/openerp/cli/shell.py +++ b/openerp/cli/shell.py @@ -17,9 +17,9 @@ ############################################################################## import code +import os import signal -from os import isatty -from sys import stdin +import sys import openerp from . import Command @@ -45,12 +45,22 @@ class Shell(Command): openerp.tools.config.parse_config(args) openerp.cli.server.report_configuration() openerp.service.server.start(preload=[], stop=True) - self.locals = { - 'openerp': openerp - } signal.signal(signal.SIGINT, raise_keyboard_interrupt) + def console(self, local_vars): + if not os.isatty(sys.stdin.fileno()): + exec sys.stdin in local_vars + else: + if 'env' not in local_vars: + print 'No evironement set, use `odoo.py shell -d dbname` to get one.' + for i in sorted(local_vars): + print '%s: %s' % (i, local_vars[i]) + Console(locals=local_vars).interact() + def shell(self, dbname): + local_vars = { + 'openerp': openerp + } with openerp.api.Environment.manage(): if dbname: registry = openerp.modules.registry.RegistryManager.get(dbname) @@ -58,18 +68,11 @@ class Shell(Command): uid = openerp.SUPERUSER_ID ctx = openerp.api.Environment(cr, uid, {})['res.users'].context_get() env = openerp.api.Environment(cr, uid, ctx) - self.locals['env'] = env - self.locals['self'] = env.user - if not isatty(stdin.fileno()): - exec stdin in self.locals - else: - print 'Connected to %s,' % dbname - print ' env: Environement(cr, openerp.SUPERUSER_ID, %s).' % ctx - print ' self: %s.' % env.user - Console(locals=self.locals).interact() + local_vars['env'] = env + local_vars['self'] = env.user + self.console(local_vars) else: - print 'No evironement set, use `odoo.py shell -d dbname` to get one.' - Console(locals=self.locals).interact() + self.console(local_vars) def run(self, args): self.init(args)