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:
niv-openerp
2013-06-11 18:59:01 +02:00
parent 76e04a8ea0
commit c6b4e77df4
2 changed files with 35 additions and 9 deletions
+24 -1
View File
@@ -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
View File
@@ -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