将上下文传递给qweb报告以管理表可见性 - odoo

时间:2015-07-14 14:57:44

标签: odoo odoo-8 openerp-8 qwebpage qweb

我们如何将上下文值传递给qweb报告,以便我可以控制表的可见性。我有一个包含很多表格的qweb报告。根据选择列表,我想在qweb报告中控制这些表的视图。所以我的选择是控制使用上下文。但没有找到任何方式来传递上下文。如果有任何其他意见,请分享。

2 个答案:

答案 0 :(得分:1)

首先创建解析器类

import time
from openerp.osv import osv
from openerp.report import report_sxw

class sale_quotation_report(report_sxw.rml_parse):

    def __init__(self, cr, uid, name, context): 
        super(sale_quotation_report, self).__init__(cr, uid, name, context=context)
            self.localcontext.update({
                    ‘key’: value,
                    ‘function_name’: self.function_name,
            })

    def function_name(self):
        ### add some code if required..

然后定义另一个类

class report_saleorderqweb(osv.AbstractModel):
    _name = ‘module_name.report_sale_order_qweb’
    _inherit = ‘report.abstract_report’
    _template = ‘module_name.report_sale_order_qweb’
    _wrapped_report_class = sale_quotation_report

然后你可以用这种方式调用localcontext方法

<span t-esc=”function_name(parameter)”/>

请参阅Qweb report

上的博客

答案 1 :(得分:0)

你的问题不清楚你究竟想要什么。例如,我不知道你的意思是“根据选择列表”,所以我假设你有一个向导,提示用户选择一些选项。如果是这种情况,您可以在打印函数的return语句中传递数据字典中的选择变量。

def print_report(self, cr, uid, ids, context=None):
        if context is None:
            context = {}
        datas = {'ids': context.get('active_ids', [])}
        res = self.read(cr, uid, ids, ['date_start', 'date_end', 'user_ids'], context=context)
        res = res and res[0] or {}
        datas['form'] = res
        if res.get('id',False):
            datas['ids']=[res['id']]
        return self.pool['report'].get_action(cr, uid, [], 'point_of_sale.report_detailsofsales', data=datas, context=context)

这传递了数据['form']下的用户选择。然后,您可以访问qweb中的选项作为数据['form'] ['date_start']