2015-12-03 42 views
0

我真的被這個困住了。我在Odoo中創建了一個新類,我想從控制器調用。當我傳遞一個我創建的id字段時,此對象需要獲取有關客戶(res.partner)的數據。嘗試使用繼承的Odoo對象時無類型對象錯誤

我的問題是,我似乎無法在我的課堂中調用我的解析方法。但是我這樣做我得到一個nonetype對象沒有屬性解析。

我在做什麼錯?我是noob嗎?而且,我是否比所需要的更難?

這是我在一個文件中類中調用callback.py

__author__ = 'karl' 
import requests 
import json 
from openerp import models, api 
import logging 

_logger = logging.getLogger(__name__) 


class JiraParse(models.Model): 
    _name = "res.parter" 
    _inherit = "res.partner" 

    def readname(self,jira_id): 
     query = """ 
     SELECT name 
     FROM res.partner 
     WHERE jira_id = {0} 
     """.format(jira_id) 

     self.env.cr.execute(query) 
     result = [(row[0], row[0]) for row in self.env.cr.fetchall()] 
     _logger.info(str(result)) 
     return result 

    def parse(self,data): 
     #load json data 
     R = json.loads(data) 
     Customer = R['issue']['fields']['customfield_10128'] 
     CustomerId = R['issue']['fields']['customfield_10128']['id'] 
     issue_url = R['issue']['self'] 



     res = self.readname(CustomerId) 
     _logger.info(str(res)) 
     #create dictionary/json callback object 
     json_response = {'fields': 
          {'customfield_10128':{'value': 'ISYS Group'} 
           }} 
     #json_response = Customer,CustomerId,issue_url 
     #Make call back request to Jira to update customer data 
     H = {'Content-Type':'application/json'} 
     req = requests.post('http://10.10.15.39:5000', data=json.dumps(json_response), headers=H) 
     return True 

我想從我的控制器這樣稱呼它:

t = callback.JiraParse() 
t.parse(requestdata) 

哪裏是的RequestData由接收到一個JSON對象控制器。

我得到的是這樣的

AttributeError: 'NoneType' object has no attribute 'parse' 

感謝

回答

0

你可以做這樣的事情調用使用類對象的類方法。

t = JiraParse() 
t.parse(requestdata) 

主要不直接調用你的方法,因爲你的方法是不是靜態方法,使我們必須要作出這樣的解析方法爲static通過類名直接訪問背後的原因。所以它完全是面向對象概念的一部分。

如果它在單獨的文件中,那麼您必須在您的.py文件中導入JiraParse類。

from callback import JiraParse 
t = JiraParse() 
t.parse(requestdata) 

我希望我的回答可以對你有所幫助:)

+0

我已經有進口在控制器的頂部。問題不在於導入工作正常。像實例化類一樣。只有當我在課堂上調用某種方法時,它纔會起作用。 –

+0

必須嘗試從第一個選項中退出 –