[MERGE] forward port of branch 8.0 up to 92c7874
[odoo/odoo.git] / openerp / service / common.py
1 # -*- coding: utf-8 -*-
2
3 import logging
4
5 import openerp.release
6 import openerp.tools
7 from openerp.tools.translate import _
8
9 import security
10
11 _logger = logging.getLogger(__name__)
12
13 RPC_VERSION_1 = {
14         'server_version': openerp.release.version,
15         'server_version_info': openerp.release.version_info,
16         'server_serie': openerp.release.serie,
17         'protocol_version': 1,
18 }
19
20 def dispatch(method, params):
21     if method not in ['login', 'about', 'timezone_get',
22                       'version', 'authenticate', 'set_loglevel']:
23         raise Exception("Method not found: %s" % method)
24
25     fn = globals()['exp_' + method]
26     return fn(*params)
27
28 def exp_login(db, login, password):
29     # TODO: legacy indirection through 'security', should use directly
30     # the res.users model
31     res = security.login(db, login, password)
32     msg = res and 'successful login' or 'bad login or password'
33     _logger.info("%s from '%s' using database '%s'", msg, login, db.lower())
34     return res or False
35
36 def exp_authenticate(db, login, password, user_agent_env):
37     res_users = openerp.registry(db)['res.users']
38     return res_users.authenticate(db, login, password, user_agent_env)
39
40 def exp_version():
41     return RPC_VERSION_1
42
43 def exp_about(extended=False):
44     """Return information about the OpenERP Server.
45
46     @param extended: if True then return version info
47     @return string if extended is False else tuple
48     """
49
50     info = _('See http://openerp.com')
51
52     if extended:
53         return info, openerp.release.version
54     return info
55
56 def exp_timezone_get(db, login, password):
57     return openerp.tools.misc.get_server_timezone()
58
59 def exp_set_loglevel(loglevel, logger=None):
60     # TODO Previously, the level was set on the now deprecated
61     # `openerp.netsvc.Logger` class.
62     return True
63
64 # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: