Нет ошибки типа объекта при попытке использовать унаследованный объект Odoo

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

У меня проблема в том, что я не могу вызвать свой метод синтаксического анализа в своем классе. Однако я делаю это, я получаю, что объект 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'

Спасибо


person Karl Hunt    schedule 03.12.2015    source источник


Ответы (1)


Вы можете сделать что-то подобное для вызова метода класса с использованием объекта класса.

t = JiraParse()
t.parse(requestdata)

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

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

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

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

person DASADIYA CHAITANYA    schedule 03.12.2015
comment
У меня уже есть импорт в верхней части контроллера. Проблема не в том, что импорт работает нормально. Как и создание экземпляра класса. Только когда я вызываю метод в классе, он не работает. - person Karl Hunt; 03.12.2015
comment
Придется попробовать проверить из первых вариантов - person DASADIYA CHAITANYA; 04.12.2015