2012-10-09 42 views
1

在openerp 6.1窗口中,當人們從HR模塊登錄和註銷時,我嘗試捕獲公共IP地址。所以,在hr_attendance模塊中,我添加了ip_address字段。在Web客戶端提供的公共IP地址\公用\ http.py ENVIRON [ 'REMOTE_ADDR']如何訪問模塊 - OpenERP web/http.py方法

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中需要調用哪個方法,以及傳遞參數給get environ ['REMOTE_ADDR'] HR模塊

+0

您的代碼是否正常運行?我認爲'_get_ipaddress'在'uid'後面缺少'ids'參數。 –

+0

在我懷疑哪種方法需要調用以及哪些參數需要傳遞以從Hr模塊獲取environ ['Remote_Addr'] – user1731940

回答

0

看起來好像可能很難o不更改Web層,因爲模塊代碼並不知道有關Web服務器層的任何信息。在挖掘幾分鐘後,我能找到的最好的地方是可以將IP地址從HTTP請求複製到OpenERP上下文字典。我認爲如果您將此行添加到WebRequest.init() method,它可能會執行您所需的操作。

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

我認爲這方面將被傳遞到模塊的代碼,你可以閱讀。