diff --git a/web_auto_paginate/__init__.py b/web_auto_paginate/__init__.py index e69de29b..641f669e 100644 --- a/web_auto_paginate/__init__.py +++ b/web_auto_paginate/__init__.py @@ -0,0 +1 @@ +# from . import test diff --git a/web_auto_paginate/__manifest__.py b/web_auto_paginate/__manifest__.py index 35437f06..9a4eae1f 100644 --- a/web_auto_paginate/__manifest__.py +++ b/web_auto_paginate/__manifest__.py @@ -8,6 +8,7 @@ 'complexity': 'expert', 'depends': [ 'web', + # 'stock', # Only for testing ], 'data': [ 'views/web_views.xml', diff --git a/web_auto_paginate/static/src/js/action_manager.js b/web_auto_paginate/static/src/js/action_manager.js index 185f1948..d3ead11c 100644 --- a/web_auto_paginate/static/src/js/action_manager.js +++ b/web_auto_paginate/static/src/js/action_manager.js @@ -5,15 +5,21 @@ odoo.define('web_auto_paginate.action_manager', function (require) { ActionManager.include({ _executeCloseAction: function (action, options) { + var res = this._super(action, options); if (action.auto_paginate) { - var $_o_pager_next = $('button.o_pager_next'); - if ($_o_pager_next.length >= 1) { - setTimeout(function(){$_o_pager_next[0].click()}, 500) - } + res.then(auto_next_record); } - return this._super(action, options); + return res; } }); + function auto_next_record() { + var $_o_pager_next = $('button.o_pager_next'); + if ($_o_pager_next.length >= 1) { + $_o_pager_next = $_o_pager_next[0]; + $_o_pager_next.click(); + } + } + return ActionManager; }); diff --git a/web_auto_paginate/test.py b/web_auto_paginate/test.py new file mode 100644 index 00000000..43e222b5 --- /dev/null +++ b/web_auto_paginate/test.py @@ -0,0 +1,25 @@ +# include this file and depend on 'stock' to test on cancel button +# This intentionally introduces a lot of delay around stock pickings +# to help test the UI's responsiveness. + +from time import sleep +from odoo import api, models + +import logging +_logger = logging.getLogger(__name__) + + +class StockPicking(models.Model): + _inherit = 'stock.picking' + + def action_cancel(self): + super().action_cancel() + return { + 'auto_paginate': True, + } + + @api.multi + def read(self, fields=None, load='_classic_read'): + _logger.warn('sleeping') + sleep(1) + return super().read(fields=fields, load=load)