Odoo中文社区可以通过以下三个域名访问:shine-it.net , odoocn.org,odoo.net.cn

原论坛用户的基本信息和发帖这里都予以保留,请注意:原论坛用户无需重新注册新用户,但是您的密码需要重置

开发人员可以登录gitter讨论组: http://gitter.im/odoo-china/Talk, 需要github账号

如果您登录系统碰到问题,请在微信公众号留言:

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.



  • 本人最近通过 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 数据接口在哪里? 好象报表 report 返回数据都是 pdf 的 base64 string 一样的...



  • 原有报表的 xmlrpc 数据接口没有用,我现在直接用新的接口返回报表(mako文件)需要的数据,

    其实现在只是用到了原来报表的名称定义,以便模块的 报表部分有链接,让后我把连接调跳转到我需要处理的 controllers上



  • 嗯. 了解了.谢谢分享. 然后, 有个问题.
    可不可以以继承的方式(不修改原有actions controller) 去接管 report 的 web client 动作呢? 



  • 继承report我开始就是这么想,但是比较复杂,就没有用这个办法,report有很多处理rml的方法和替换render


登录后回复
 

与 Odoo 中文社区 的连接断开,我们正在尝试重连,请耐心等待