Bezdepbonusu7Программирование: статьи и ответы

Вопрос

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

Автор вопроса: Karl HuntОтветов: 1

Я действительно застрял с этим. Я создал новый класс в 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'

Спасибо

pythoninheritanceclassodoo-8openerp

Ответы

Ответ 1 · DASADIYA CHAITANYA

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

t = JiraParse()
t.parse(requestdata)

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

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

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

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

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы