2015-12-03 2 views
0

Я действительно застрял в этом. Я создал новый класс в Odoo, который мне нужен для вызова с контроллера. Этот объект должен получить данные о клиенте (res.partner), когда я передаю ему поле id, которое я создал.Отсутствие ошибки объекта объекта при попытке использовать унаследованный объект Odoo

Проблема заключается в том, что я не могу назвать метод parse в своем классе. Однако я делаю это, я получаю объект nonetype, который не имеет атрибута.

Что я делаю неправильно? Я ноб? И также я делаю это сложнее, чем нужно?

Вот мой класс в файле с именем 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) 

Главная причина для не вызова методы напрямую, потому что ваш метод не статический метод, так что мы должны сделать этот метод синтаксического анализа как статическим для непосредственного доступа к вашему имени класса. так что это полностью часть объектно-ориентированной концепции.

Если это отдельный файл, вам необходимо импортировать класс JiraParse в ваш .py-файл.

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

Я надеюсь, что мой ответ может полезно для вас :)

+0

У меня уже есть импорт в верхней части контроллера. Проблема не в том, что импорт работает нормально. Как и экземпляр класса. Только когда я пришел к вызову метода в классе, он не работает. –

+0

Придется попробовать проверить первые варианты –

Смежные вопросы