Web端增加 addons的方法分享
-
本人最近通过 web实现打印功能,先整理我的处理办法,供需要的人参考。
一.抓包分析 report调用的数据:
_terp_selection:[68]
_terp_action:400
terp_id:68
terp_model:sale.order
datas:{'groups_id': [], 'multi': False, 'report_xsl': False, 'name': u'\u62a5\u4ef7\u5355/\u8ba2\u5355',
'string': u'\u62a5\u4ef7\u5355/\u8ba2\u5355', 'auto': False, 'report_name': u'sale.order',
'header': True, 'attachment_use': False, 'report_type': u'html',
'usage': False, 'model': u'sale.order', 'type': u'ir.actions.report.xml',
'id': 400, 'report_xml': False, 'attachment': False}
二.处理方法:
1.拦截actions,修改 openerp/controllers/actions,如果报表是 type='ir.actions.report.xml' and report_type='html' 调转到 xxx controllers
2.新增加 xxx web addons
1) openerp/controllers/增加具体的controller代码 ,增加文件 xxx.py,下控制代码,代码通过xmlrpc访问 server,返回数据在xxx.mako中使用
2) 在openerp/controllers/templates 增加 xxx 对应的 templates ,xxx.mako文件
3) openerp/controllers/root 增加 xxx = controllers.xxx.Xxx()
4) openerp/controllers 下的__init.py 增加 对 xxx 的 import
3.如果需要,在 server addons下增加 可以供 xmlrpc调用的代码,比如产生报表数据。
三.中文处理注意事项:
1).controller 的py 用utf-8编码
文件第一行
# -- encoding: utf-8 --
2).mako用utf-8编码
文件第一行
## -- coding: utf-8 --
四.方法作用
调用或跳转到自己controllers如果用其它通用的办法,比如菜单,那么这样的模式可以增加自己想增加的任何 web 端的功能,数据源还是访问 oe server. -
原有报表的 xmlrpc 数据接口没有用,我现在直接用新的接口返回报表(mako文件)需要的数据,
其实现在只是用到了原来报表的名称定义,以便模块的 报表部分有链接,让后我把连接调跳转到我需要处理的 controllers上 -
继承report我开始就是这么想,但是比较复杂,就没有用这个办法,report有很多处理rml的方法和替换render