33
33
import openerp.modules.registry
34
34
from openerp.tools.translate import _
35
35
from openerp.tools import config
39
from openerp.addons.web.http import request
36
from openerp import http
38
from openerp.http import request
41
40
#----------------------------------------------------------
42
41
# OpenERP Web helpers
528
527
@http.route('/', type='http', auth="none")
529
528
def index(self, s_action=None, db=None, debug=False, **kw):
529
query = dict(urlparse.parse_qsl(request.httprequest.query_string, keep_blank_values=True))
530
redirect = '/web' + '?' + urllib.urlencode(query)
531
return redirect_with_hash(redirect)
533
@http.route('/web', type='http', auth="none")
534
def web_client(self, s_action=None, db=None, debug=False, **kw):
530
535
debug = debug != False
532
lst = http.db_list(True)
533
if db in lst and db != request.session.db:
534
request.session.logout()
535
request.session.db = db
537
if db != request.session.db:
539
except openerp.exceptions.AccessDenied:
544
guessed_db = http.db_monodb(request.httprequest)
538
547
query = dict(urlparse.parse_qsl(request.httprequest.query_string, keep_blank_values=True))
539
query.update({'db': request.session.db})
548
query.update({'db': db})
540
549
redirect = request.httprequest.path + '?' + urllib.urlencode(query)
541
550
return redirect_with_hash(redirect)
543
db = request.session.db
545
js = "\n ".join('<script type="text/javascript" src="%s"></script>' % i for i in manifest_list('js', db=db, debug=debug))
546
css = "\n ".join('<link rel="stylesheet" href="%s">' % i for i in manifest_list('css', db=db, debug=debug))
552
if guessed_db is None and db is None and lst:
553
return redirect(lst[0])
555
if guessed_db is None and lst:
558
if db is not None and db != guessed_db:
559
request.session.logout()
560
request.session.db = db
563
js = "\n ".join('<script type="text/javascript" src="%s"></script>' % i for i in manifest_list('js', db=guessed_db, debug=debug))
564
css = "\n ".join('<link rel="stylesheet" href="%s">' % i for i in manifest_list('css', db=guessed_db, debug=debug))
548
566
r = html_template % {
551
'modules': simplejson.dumps(module_boot(db=db)),
569
'modules': simplejson.dumps(module_boot(db=guessed_db)),
552
570
'init': 'var wc = new s.web.WebClient();wc.appendTo($(document.body));'
554
572
return request.make_response(r, {'Cache-Control': 'no-cache', 'Content-Type': 'text/html; charset=utf-8'})
852
870
return {'error': _('The old password you provided is incorrect, your password was not changed.'), 'title': _('Change Password')}
853
871
return {'error': _('Error, password not changed !'), 'title': _('Change Password')}
855
@http.route('/web/session/sc_list', type='json', auth="user")
857
return request.session.model('ir.ui.view_sc').get_sc(
858
request.session.uid, "ir.ui.menu", request.context)
860
873
@http.route('/web/session/get_lang_list', type='json', auth="none")
861
874
def get_lang_list(self):
1003
1016
return request.session.model('ir.ui.menu').get_needaction_data(menu_ids, request.context)
1005
@http.route('/web/menu/action', type='json', auth="user")
1006
def action(self, menu_id):
1007
# still used by web_shortcut
1008
actions = load_actions_from_ir_values('action', 'tree_but_open',
1009
[('ir.ui.menu', menu_id)], False)
1010
return {"action": actions}
1012
1018
class DataSet(http.Controller):
1014
1020
@http.route('/web/dataset/search_read', type='json', auth="user")
1080
1086
if method.startswith('_'):
1081
raise Exception("Access denied")
1087
raise Exception("Access Denied: Underscore prefixed methods cannot be remotely called")
1083
1089
return getattr(request.registry.get(model), method)(request.cr, request.uid, *args, **kwargs)
1683
1689
if 'ids' in action['datas']:
1684
1690
report_ids = action['datas'].pop('ids')
1685
1691
report_data.update(action['datas'])
1687
raise ValueError("action['datas']['ids'] and context['active_ids'] are undefined")
1689
1693
report_id = report_srv.report(
1690
1694
request.session.db, request.session.uid, request.session.password,