Как я могу вызвать пользовательскую функцию в tryton после создания записи? - PullRequest
0 голосов
/ 14 февраля 2020

Мне нужно выполнить уведомление для базы данных, не относящейся к тритону, после создания записи.

Я вижу, что можно перезаписать функцию создания ... но есть и лучшие решения, чтобы быть уверенным, что после фиксации базы данных?

Я делаю таким образом

@classmethod
def create(cls, values):
    newObject = super(Inventory, cls).create(values)
    newObject.notifieToMainServer()

regards

1 Ответ

0 голосов
/ 14 февраля 2020

Да, вы можете вызывать функцию, когда Transcation фиксируется, используя функцию atexit транзакции tryton.

Таким образом, ваш код будет выглядеть примерно так:

from trytond.transaction import Transaction

@classmethod
def create(cls, values):
   records = super().create(values)
   Transaction.atexit(notifyToMainServer)
   return records

Если вам нужно предотвратить фиксацию транзакции, когда уведомление не может быть отправлено, вы можете использовать протокол двухфазной фиксации присоединился к некоторым менеджерам данных в транзакции . В Tryton по умолчанию реализована функция sendmail_transactional , которая может использоваться в качестве справочной информации для реализации DataManager для отправки пользовательских уведомлений.

Надеюсь, это поможет!

...