如何在模块中访问 - OpenERP web / http.py方法

时间:2012-10-09 14:16:43

标签: openerp

在openerp 6.1窗口中,当人们从HR模块登录和注销时,我试图捕获公共IP地址。所以,在hr_attendance模块中,我添加了ip_address字段。 Web \ common \ http.py environ ['REMOTE_ADDR']中提供的客户端公共IP地址

from osv import fields, osv
from web.common.http import Root

class hr_attendance(osv.osv):

  def _get_ipaddress(self, cr, uid, context=None):
    ip = None
    try:
       # environ['REMOTE_ADDR'] how to get 
    except Exception, e:
      pass
    return ip

_inherit = "hr.attendance"
_columns = {
       'ip_address' : fields.char('IP Address', readonly=True, size=64)
        }

_defaults = {
        'ip_address': _get_ipaddress,
    }

hr_attendance()

如何在默认方法中获取客户端IP地址或environ ['REMOTE_ADDR]?在hr_attendance模块中我需要覆盖哪个类和方法?

我怀疑需要在http.py中调用哪个方法以及在HR模块中传递get environ ['REMOTE_ADDR']的参数是什么

1 个答案:

答案 0 :(得分:0)

看起来如果不更改Web层可能很难,因为模块代码并不真正了解Web服务器层。在挖掘几分钟后我能找到的最好的地方是你可以将IP地址从HTTP请求复制到OpenERP上下文字典的地方。我想如果你把这一行添加到WebRequest.init() method,它可能会做你需要的。

self.context['remote_addr'] = self.httprequest.remote_addr

我认为上下文会传递给您可以阅读它的模块代码。

相关问题