From d2908701c65713bf1f446a842dcad2a4dd6f1698 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Sun, 24 Sep 2023 13:23:53 +0200 Subject: [PATCH] Use dedicated method to skip user warning --- sao/src/rpc.js | 8 ++------ tryton/tryton/common/common.py | 8 +++----- trytond/trytond/res/user.py | 16 ++++++++++++++++ 3 files changed, 21 insertions(+), 11 deletions(-) diff --git a/sao/src/rpc.js b/sao/src/rpc.js index 939495823a..ea5a51ae44 100644 --- a/sao/src/rpc.js +++ b/sao/src/rpc.js @@ -48,12 +48,8 @@ return; } Sao.rpc({ - 'method': 'model.res.user.warning.create', - 'params': [[{ - 'user': session.user_id, - 'name': name, - 'always': result == 'always' - }], {}] + 'method': 'model.res.user.warning.skip', + 'params': [name, result == 'always', {}], }, session).done(function() { if (async) { Sao.rpc(args, session).then( diff --git a/tryton/tryton/common/common.py b/tryton/tryton/common/common.py index ac39e3549b..5c7a53e760 100644 --- a/tryton/tryton/common/common.py +++ b/tryton/tryton/common/common.py @@ -973,11 +973,9 @@ def process_exception(exception, *args, **kwargs): name, msg, description = exception.args res = userwarning(description, msg) if res in ('always', 'ok'): - RPCExecute('model', 'res.user.warning', 'create', [{ - 'user': rpc._USER, - 'name': name, - 'always': (res == 'always'), - }], + RPCExecute( + 'model', 'res.user.warning', 'skip', + name, (res == 'always'), process_exception=False) return rpc_execute(*args) elif exception.faultCode == 'UserError': diff --git a/trytond/trytond/res/user.py b/trytond/trytond/res/user.py index a6b1c9e6ff..e30ad3de46 100644 --- a/trytond/trytond/res/user.py +++ b/trytond/trytond/res/user.py @@ -1073,6 +1073,22 @@ class Warning_(ModelSQL, ModelView): name = fields.Char('Name', required=True) always = fields.Boolean('Always') + @classmethod + def __setup__(cls): + super().__setup__() + cls.__access__.add('user') + cls.__rpc__.update( + skip=RPC(check_access=False, readonly=False), + ) + + @classmethod + def skip(cls, name, always=False): + cls.create([{ + 'name': name, + 'user': Transaction().user, + 'always': always, + }]) + @classmethod def format(cls, name, records): key = '|'.join(map(str, records)).encode('utf-8')