Refrescar kanban_board desde una función en python.

267 views
Skip to first unread message

Almir

unread,
Mar 14, 2017, 8:43:36 AM3/14/17
to Usuarios Odoo / OpenERP en España
Hola a todos.

Tengo una vista kanban que presenta una tarjeta que tiene unos botones que le cambian la prioridad (y el color a su vez) y que la cambian de estado (cambiándola también de columna por lo tanto). El problema es que para percibir estos cambios hay que refrescar la página y esto no es lo deseado.
He probado lo siguiente:
  • Añadir lo siguiente al final de las funciones que utilizan los botones:
return {
            'type': 'ir.actions.client',
            'tag': 'reload',  
        }
Esto recarga todos los marcos de odoo, es casi lo mismo que utilizar el F5, cuando lo que quiero es que se haga un render de la vista kanban nada más, como cuando se hace drag & drop.
  • Crear una función en javascript, decararla en el código xml de las vistas de mi módulo y llamarla desde el código de python
    •  El archivo javascript lo he ubicado en "/static/src/js/recargar_kanban.js" con el siguiente contenido (que he copiado de internet casi entero ya que no tengo ni idea de javascript):
 odoo.ofertas2 = function (instance) {
    instance.web.ActionManager = instance.web.ActionManager.extend({
        ir_actions_act_reload_view: function (action, options) {
            this.inner_widget.active_view.controller.reload();
        },
    });
}
 
    •  Lo he declarado en la vista xml como: 
<template id="assets_backend" name="ofertas2 assets" inherit_id="web.assets_backend">
<xpath expr="." position="inside">
<script type="text/javascript" src="/ofertas2/static/src/js/recargar_kanban.js"></script>
</xpath>
</template>

    • Lo he añadido al final de mis funciones:
 return { 'type' :  'ir_actions_act_reload_view' }
 
Las funciones las he probado como @api.multi y como @api.one. Con la primera no hace nada y con la segunda hace lo mismo que antes de las modificaciones. 
  • También he buscado entre los ficheros de javascript del módulo "web_kanban" a ver si encontraba alguna función que claramente recargara la vista, pero no he encontrado nada (entre otras cosas porque como he dicho antes no se nada de javascript)

Creo que la segunda forma con el fichero JS llamado desde la función de python debería funcionar, pero que la función en JS no está bien. Si alguien me pudiera ayudar estaría muy agradecido.

Un saludo y muchas gracias.

Almir.
 
          Reply all
          Reply to author
          Forward
          0 new messages