Put @nodb on all methods where it is required in main.py
bzr revid: nicolas.vanhoren@openerp.com-20130611165901-l1pyzpvpniq41a29
This commit is contained in:
@@ -36,7 +36,7 @@ from openerp.tools.translate import _
|
||||
from .. import http
|
||||
openerpweb = http
|
||||
|
||||
from openerp.addons.web.http import request as req
|
||||
from openerp.addons.web.http import request as req, noauth, nodb
|
||||
|
||||
#----------------------------------------------------------
|
||||
# OpenERP Web helpers
|
||||
@@ -574,6 +574,7 @@ class Home(openerpweb.Controller):
|
||||
_cp_path = '/'
|
||||
|
||||
@openerpweb.httprequest
|
||||
@nodb
|
||||
def index(self, s_action=None, db=None, **kw):
|
||||
db, redir = db_monodb_redirect()
|
||||
if redir:
|
||||
@@ -603,18 +604,22 @@ class WebClient(openerpweb.Controller):
|
||||
_cp_path = "/web/webclient"
|
||||
|
||||
@openerpweb.jsonrequest
|
||||
@nodb
|
||||
def csslist(self, mods=None):
|
||||
return manifest_list('css', mods=mods)
|
||||
|
||||
@openerpweb.jsonrequest
|
||||
@nodb
|
||||
def jslist(self, mods=None):
|
||||
return manifest_list('js', mods=mods)
|
||||
|
||||
@openerpweb.jsonrequest
|
||||
@nodb
|
||||
def qweblist(self, mods=None):
|
||||
return manifest_list('qweb', mods=mods)
|
||||
|
||||
@openerpweb.httprequest
|
||||
@nodb
|
||||
def css(self, mods=None, db=None):
|
||||
files = list(manifest_glob('css', addons=mods, db=db))
|
||||
last_modified = get_last_modified(f[0] for f in files)
|
||||
@@ -666,6 +671,7 @@ class WebClient(openerpweb.Controller):
|
||||
last_modified, checksum)
|
||||
|
||||
@openerpweb.httprequest
|
||||
@nodb
|
||||
def js(self, mods=None, db=None):
|
||||
files = [f[0] for f in manifest_glob('js', addons=mods, db=db)]
|
||||
last_modified = get_last_modified(files)
|
||||
@@ -679,6 +685,7 @@ class WebClient(openerpweb.Controller):
|
||||
last_modified, checksum)
|
||||
|
||||
@openerpweb.httprequest
|
||||
@nodb
|
||||
def qweb(self, mods=None, db=None):
|
||||
files = [f[0] for f in manifest_glob('qweb', addons=mods, db=db)]
|
||||
last_modified = get_last_modified(files)
|
||||
@@ -692,6 +699,7 @@ class WebClient(openerpweb.Controller):
|
||||
last_modified, checksum)
|
||||
|
||||
@openerpweb.jsonrequest
|
||||
@nodb
|
||||
def bootstrap_translations(self, mods):
|
||||
""" Load local translations from *.po files, as a temporary solution
|
||||
until we have established a valid session. This is meant only
|
||||
@@ -715,6 +723,7 @@ class WebClient(openerpweb.Controller):
|
||||
"lang_parameters": None}
|
||||
|
||||
@openerpweb.jsonrequest
|
||||
@nodb
|
||||
def translations(self, mods, lang):
|
||||
res_lang = req.session.model('res.lang')
|
||||
ids = res_lang.search([("code", "=", lang)])
|
||||
@@ -740,6 +749,7 @@ class WebClient(openerpweb.Controller):
|
||||
"lang_parameters": lang_params}
|
||||
|
||||
@openerpweb.jsonrequest
|
||||
@nodb
|
||||
def version_info(self):
|
||||
return openerp.service.common.exp_version()
|
||||
|
||||
@@ -747,6 +757,7 @@ class Proxy(openerpweb.Controller):
|
||||
_cp_path = '/web/proxy'
|
||||
|
||||
@openerpweb.jsonrequest
|
||||
@nodb
|
||||
def load(self, path):
|
||||
""" Proxies an HTTP request through a JSON request.
|
||||
|
||||
@@ -765,10 +776,12 @@ class Database(openerpweb.Controller):
|
||||
_cp_path = "/web/database"
|
||||
|
||||
@openerpweb.jsonrequest
|
||||
@nodb
|
||||
def get_list(self):
|
||||
return db_list()
|
||||
|
||||
@openerpweb.jsonrequest
|
||||
@nodb
|
||||
def create(self, fields):
|
||||
params = dict(map(operator.itemgetter('name', 'value'), fields))
|
||||
return req.session.proxy("db").create_database(
|
||||
@@ -779,6 +792,7 @@ class Database(openerpweb.Controller):
|
||||
params['create_admin_pwd'])
|
||||
|
||||
@openerpweb.jsonrequest
|
||||
@nodb
|
||||
def duplicate(self, fields):
|
||||
params = dict(map(operator.itemgetter('name', 'value'), fields))
|
||||
return req.session.proxy("db").duplicate_database(
|
||||
@@ -787,6 +801,7 @@ class Database(openerpweb.Controller):
|
||||
params['db_name'])
|
||||
|
||||
@openerpweb.jsonrequest
|
||||
@nodb
|
||||
def duplicate(self, fields):
|
||||
params = dict(map(operator.itemgetter('name', 'value'), fields))
|
||||
duplicate_attrs = (
|
||||
@@ -798,6 +813,7 @@ class Database(openerpweb.Controller):
|
||||
return req.session.proxy("db").duplicate_database(*duplicate_attrs)
|
||||
|
||||
@openerpweb.jsonrequest
|
||||
@nodb
|
||||
def drop(self, fields):
|
||||
password, db = operator.itemgetter(
|
||||
'drop_pwd', 'drop_db')(
|
||||
@@ -811,6 +827,7 @@ class Database(openerpweb.Controller):
|
||||
return {'error': _('Could not drop database !'), 'title': _('Drop Database')}
|
||||
|
||||
@openerpweb.httprequest
|
||||
@nodb
|
||||
def backup(self, backup_db, backup_pwd, token):
|
||||
try:
|
||||
db_dump = base64.b64decode(
|
||||
@@ -829,6 +846,7 @@ class Database(openerpweb.Controller):
|
||||
return simplejson.dumps([[],[{'error': openerp.tools.ustr(e), 'title': _('Backup Database')}]])
|
||||
|
||||
@openerpweb.httprequest
|
||||
@nodb
|
||||
def restore(self, db_file, restore_pwd, new_db):
|
||||
try:
|
||||
data = base64.b64encode(db_file.read())
|
||||
@@ -838,6 +856,7 @@ class Database(openerpweb.Controller):
|
||||
raise Exception("AccessDenied")
|
||||
|
||||
@openerpweb.jsonrequest
|
||||
@nodb
|
||||
def change_password(self, fields):
|
||||
old_password, new_password = operator.itemgetter(
|
||||
'old_pwd', 'new_pwd')(
|
||||
@@ -863,10 +882,12 @@ class Session(openerpweb.Controller):
|
||||
}
|
||||
|
||||
@openerpweb.jsonrequest
|
||||
@nodb
|
||||
def get_session_info(self):
|
||||
return self.session_info()
|
||||
|
||||
@openerpweb.jsonrequest
|
||||
@nodb
|
||||
def authenticate(self, db, login, password, base_location=None):
|
||||
wsgienv = req.httprequest.environ
|
||||
env = dict(
|
||||
@@ -907,6 +928,7 @@ class Session(openerpweb.Controller):
|
||||
return {"error": e, "title": _("Languages")}
|
||||
|
||||
@openerpweb.jsonrequest
|
||||
@nodb
|
||||
def modules(self):
|
||||
# return all installed modules. Web client is smart enough to not load a module twice
|
||||
return module_installed()
|
||||
@@ -986,6 +1008,7 @@ class Menu(openerpweb.Controller):
|
||||
return Menus.search(menu_domain, 0, False, False, req.context)
|
||||
|
||||
@openerpweb.jsonrequest
|
||||
@nodb
|
||||
def load(self):
|
||||
""" Loads all menu items (all applications and their sub-menus).
|
||||
|
||||
|
||||
+11
-8
@@ -83,13 +83,14 @@ class WebRequest(object):
|
||||
|
||||
``bool``, indicates whether the debug mode is active on the client
|
||||
"""
|
||||
def __init__(self, httprequest, method):
|
||||
def __init__(self, httprequest, method, auth_method=None):
|
||||
self.httprequest = httprequest
|
||||
self.httpresponse = None
|
||||
self.httpsession = httprequest.session
|
||||
self.db = None
|
||||
self.uid = None
|
||||
self.method = method
|
||||
self.auth_method = auth_method
|
||||
|
||||
def init(self, params):
|
||||
self.params = dict(params)
|
||||
@@ -128,16 +129,19 @@ class WebRequest(object):
|
||||
self.lang = lang.replace('-', '_')
|
||||
|
||||
def authenticate(self):
|
||||
if self.method.auth == "nodb":
|
||||
if self.auth_method == "nodb":
|
||||
self.db = None
|
||||
self.uid = None
|
||||
elif self.method.auth == "noauth":
|
||||
elif self.auth_method == "noauth":
|
||||
self.db = (self.session._db or openerp.addons.web.controllers.main.db_monodb(self)).lower()
|
||||
self.uid = None
|
||||
else:
|
||||
self.session.check_security()
|
||||
try:
|
||||
self.session.check_security()
|
||||
except session.SessionExpiredException, e:
|
||||
raise session.SessionExpiredException("Session expired for request %s" % self.httprequest)
|
||||
self.db = self.session._db
|
||||
self.uid = self.session_uid
|
||||
self.uid = self.session._uid
|
||||
|
||||
def registry(self):
|
||||
return openerp.modules.registry.RegistryManager.get(self.db)
|
||||
@@ -694,18 +698,17 @@ class Root(object):
|
||||
exposed = getattr(method, 'exposed', False)
|
||||
auth = getattr(method, 'auth', None)
|
||||
method = c.get_wrapped_method(method_name)
|
||||
method.auth = auth
|
||||
if exposed == 'json':
|
||||
_logger.debug("Dispatch json to %s %s %s", ps, c, method_name)
|
||||
def fct(_request):
|
||||
_req = JsonRequest(_request, method)
|
||||
_req = JsonRequest(_request, method, auth)
|
||||
with set_request(_req):
|
||||
return request.dispatch()
|
||||
return fct
|
||||
elif exposed == 'http':
|
||||
_logger.debug("Dispatch http to %s %s %s", ps, c, method_name)
|
||||
def fct(_request):
|
||||
_req = HttpRequest(_request, method)
|
||||
_req = HttpRequest(_request, method, auth)
|
||||
with set_request(_req):
|
||||
return request.dispatch()
|
||||
return fct
|
||||
|
||||
Reference in New Issue
Block a user