我真的很困惑。我在Odoo中创建了一个新类,我希望从控制器调用它。当我传递一个我创建的id字段时,该对象需要获取有关客户(res.partner)的数据。
我遇到的问题是我似乎无法在课堂上调用我的解析方法。但是,我这样做,我得到一个非类型对象没有属性解析。
我做错了什么?我是菜鸟吗?而且我是否也比它需要的更难?
这是一个名为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 :(得分:0)
您可以使用类对象调用类方法。
t = JiraParse()
t.parse(requestdata)
不直接调用方法的主要原因是因为您的方法不是静态方法,因此我们必须将该解析方法设置为静态,以便您的类名直接访问。所以它完全是面向对象概念的一部分。
如果它位于单独的文件中,则必须在.py文件中导入JiraParse类。
from callback import JiraParse
t = JiraParse()
t.parse(requestdata)
我希望我的回答对您有所帮助:)。