[FIX] web_auto_paginate: servers can respond in their own time, don't rely on timeouts

This commit is contained in:
Jared Kipe
2021-01-07 04:13:06 -08:00
parent cfc95fdc2e
commit 534af07eb7
4 changed files with 38 additions and 5 deletions

View File

@@ -0,0 +1 @@
# from . import test

View File

@@ -8,6 +8,7 @@
'complexity': 'expert',
'depends': [
'web',
# 'stock', # Only for testing
],
'data': [
'views/web_views.xml',

View File

@@ -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;
});

25
web_auto_paginate/test.py Normal file
View File

@@ -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)