Функция вызова при создании записи Odoo - PullRequest
0 голосов
/ 02 января 2019

На самом деле, я хочу отправить сообщение в тему с использованием облачного паба google, когда любая запись, созданная / обновленная на сервере Odoo

Я перезаписываю функцию создания, как показано ниже

@api.model
def create(self, values):
    values = self._remove_reified_groups(values)
    user = super(Users, self).create(values) // created and return id just like res.users(67,)
    group_multi_company = self.env.ref('base.group_multi_company', False)
    if group_multi_company and 'company_ids' in values:
        if len(user.company_ids) <= 1 and user.id in group_multi_company.users.ids:
            group_multi_company.write({'users': [(3, user.id)]})
        elif len(user.company_ids) > 1 and user.id not in group_multi_company.users.ids:
            group_multi_company.write({'users': [(4, user.id)]})

    # Publish message to subscriber
    pubsub = PubSub()

    // Here I used own middleware service which is used for CRUD opertion on 
       Odoo model
    // Below API return record of model 'res.users'
    // Here user.id return 67
    req = requests.get('http://localhost:8080/users/' + str(user.id))
    fetch_user = req.text // response return user not found because record nor save in table
    result = pubsub.publish_message_on_topic(self.project_id, self.topic_name, fetch_user)
    return user

В созданииПользователь функции создал & его возвращаемый идентификатор в пользовательской переменной, но он не сохраняется в таблице до тех пор, пока не будет запущен 'return user' (последняя строка функции).Я не знаю, как работала функция создания в Odoo?

Итак, я ищу любое событие, инициируемое при создании / обновлении записи, поэтому я реализую свою логику pubsub для этой функции.

Любая помощьили предложение?

Спасибо.

1 Ответ

0 голосов
/ 04 января 2019

odoo работает как транзакция, пока транзакция не завершена, она не зафиксировала ее .odoo вызывает функцию create и выполняет все ее функции, но она не отражается в базе данных, пока не вернет значение, вы получите ее значения в функции, но она не зафиксировала это в базе данных до функции возвращает значение

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...