Skip to content
Israel Lugo edited this page Apr 15, 2017 · 10 revisions

Welcome to the cash_box wiki!

Como cambiar lo que aparece en el broadcrumbs cuando se ve o edita un modelo?

Se debe agregar el atributo _rec_name al modelo este llevara por valor el nombre de otro atributo del modelo que es lo que se va a mostrar.

Como crear los archivos de control de restricciones y seguridad de grupos en odoo 10

PASO 1: Se creara 2 archivos en la carpeta MY_MODULE/security/ si no existe la carpeta créala.

NOTA: si usaste el scaffold de odoo 10 para crear tu modulo esta carpeta estará creada con un archivo dentro.

El primer archivo se llama ir.model.access.csv, este es un archivo csv que lleva esta estructura

id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink

  • id => hace referencia al id de la restricción que se esta creando
  • name => hace referencia al nombre de la restricción.
  • model_id:id => hace referencia al name del modelo, ojo este debe comenzar el nombre con la palabra 'model'
  • group_id:id => hace refecencia al id que se le dara a la restriccion-grupo, este id es el que sera usado para aplicar las restricciones a la vista, mas adelante se observara.
  • perm_read => hace referencia a la permisologia de leer, su valor puede ser 0 o 1
  • perm_write => hace referencia a la permisologia de escribir, su valor puede ser 0 o 1
  • perm_create => hace referencia a la permisologia de crear, su valor puede ser 0 o 1
  • perm_unlink => hace referencia a la permisologia de eliminar, su valor puede ser 0 o 1

Como añadir un Custom button en el header de un list view (tree)?

PASO 1: El primer paso sera crear un archivo xml (qweb) que va a contener el boton, este ira en la siguiente ubicacion static/src/xml/custom_button.xml su contenido sera el siguiente

<?xml version="1.0" encoding="UTF-8"?> <templates id="template" xml:space="preserve"> <t t-extend="ListView.buttons"> <t t-jquery="button.o_list_button_add" t-operation="after"> <t t-if="widget.model=='my_module.my_model'"> <button class="btn btn-primary btn-large" id="custom_btn" name='custom_button' type="button">Custom Button</button> </t> </t> </t> </templates>

Explicación:

  • t-extend="ListView.buttons" => esto extiende al widget ListView, que es donde vamos a insertar nuestro boton
  • t-jquery="button.o_list_button_add" t-operation="after" => esto hace referencia a la accion que vamos a realizar dentro del widget, aqui estamos indicando que nuestro boton se va a posicionar despues del boton Crear que trae odoo por defecto, NOTA: o_list_button_add esta es la clase del boton crear por defecto, esta clase debe ser escrita exactamente o si no, no mostrara el boton. Tambien podemos remplazar el boton crear que trae odoo por defecto solo cambiado el valor de t-operation por "replace"
  • t-if="widget.model=='my_module.my_model'" => ese sera el condicional que hara la magia para que solo el boton aparezca en el modelo que se desee

PASO 2: Agregar el archivo qweb al manifest para que lo reconozca. esta es la linea que colocaremos

'qweb': ['static/src/xml/custom_button.xml'],

Listo ya tenemos un nuevo boton en nuestro header del list view.

Ahora te preguntaras como le agregas una accion al boton? hay que realizar un par de cosas para agregarle accion al boton, las acciones se agregan por medio de javascript al boton.

PASO 3: Crear un archivo js, que guardaremos en la siguiente ubicacion static/src/js/custom_button_actions.js contendra la siguiente informacion.

openerp.my_module = function (instance, local) { var QWeb = openerp.web.qweb; var _t = instance.web._t; var self = this;

`instance.web.ListView.include({`
    `render_buttons: function () {`
        `var self = this;`
        `var add_button = false;`
        `if (!this.$buttons) { // Ensures that this is only done once`
            `add_button = true;`
        `}`
        `this._super.apply(this, arguments); // Sets this.$buttons`
        `if (add_button) {`
            `this.$buttons.find('#custom_btn').click(this.proxy('my_accion'));`
        `}`
    `},`
    `my_accion: function () {`
        `var self = this;`
       
    `}`
`});`

};

PASO 4: Crear otro archivo xml el que contendrá la importación del archivo creado anteriormente, para que odoo pueda reconocerlo.

Clone this wiki locally