From 297781df089945892f9d31aa049c0ecd0f5b88bc Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Thu, 6 Feb 2014 17:12:04 +0100 Subject: [PATCH] [IMP] Move some qweb rendering context vars from website#ir.qweb to server#ir.ui.view bzr revid: fme@openerp.com-20140206161204-vp6kydvdxhg5qykx --- openerp/addons/base/ir/ir_ui_view.py | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/openerp/addons/base/ir/ir_ui_view.py b/openerp/addons/base/ir/ir_ui_view.py index 011ba2dc792..ccbd563ef79 100644 --- a/openerp/addons/base/ir/ir_ui_view.py +++ b/openerp/addons/base/ir/ir_ui_view.py @@ -20,15 +20,19 @@ ############################################################################## import collections import copy +import fnmatch import logging from lxml import etree from operator import itemgetter import os +import simplejson +import werkzeug import HTMLParser import openerp from openerp import tools +from openerp.http import request from openerp.osv import fields, osv, orm from openerp.tools import graph, SKIPPED_ELEMENT_TYPES from openerp.tools.safe_eval import safe_eval as eval @@ -40,6 +44,17 @@ _logger = logging.getLogger(__name__) MOVABLE_BRANDING = ['data-oe-model', 'data-oe-id', 'data-oe-field', 'data-oe-xpath'] +def keep_query(*args, **kw): + if not args and not kw: + args = ('*',) + params = kw.copy() + query_params = frozenset(werkzeug.url_decode(request.httprequest.query_string).keys()) + for keep_param in args: + for param in fnmatch.filter(query_params, keep_param): + if param not in params and param in request.params: + params[param] = request.params[param] + return werkzeug.urls.url_encode(params) + class view_custom(osv.osv): _name = 'ir.ui.view.custom' _order = 'create_date desc' # search(limit=1) should return the last customization @@ -805,10 +820,20 @@ class view(osv.osv): if not context: context = {} + if values is None: + values = dict() + qcontext = dict( + keep_query=keep_query, + request=request, + json=simplejson, + quote_plus=werkzeug.url_quote_plus, + ) + qcontext.update(values) + def loader(name): return self.read_template(cr, uid, name, context=context) - return self.pool[engine].render(cr, uid, tname, values, loader=loader, context=context) + return self.pool[engine].render(cr, uid, tname, qcontext, loader=loader, context=context) #------------------------------------------------------ # Misc