Trucos de Odoo

Desactivar el boton Import del tree:

    <tree import="0"/>

Actualizar un módulo desde el terminal:

./odoo-bin -c your_conf_file -u module_name -d database_name

por ejemplo:

./odoo-bin -c odoo-12.conf -u vendor_bill_report_xml -d xml_report_v12

o también

Si el módulo se llama portal y esta donde todos los módulos y la base de datos se llama odoo12.

./odoo-bin -u portal -d odoo12

Llamar a un método de otro módelo:

self.env['modelo.llamar']._metodomodelo()

Validar antes de guardar:

def _check_codigo_point_sales(self):
        if len(self.name) < 4:
            raise ValidationError("El Punto de Venta tiene que tener 4 dígitos")

Crear un usuario tipo admin

env['res.users'].create({
          'login': 'luisa',
          'password': 'garcia',
          'partner_id': env['res.partner'].create({
          'name': "Strawman Test User"
     }).id
 })
last_id = env['res.users'].search([], order='id desc')[0].id
cr = env.cr cr.execute('insert into res_groups_users_rel (gid, uid) values(3,%s)',[last_id]) cr.execute('insert into res_groups_users_rel (gid, uid) values(2,%s)',[last_id])

Ejecutar código Odoo desde un fichero bash con erppeek

Supongamos que el fichero se llama test.sh. Escribimos ahí:

pip3 install erppeek
cat << EOF > pyscript.py
#!/usr/bin/python3
import erppeek
DATABASE = 'odoo12'
SERVER = 'http://localhost:8069'
ADMIN_PASSWORD = 'admin'
USER_PASSWORD='miclave'
DEMO = False
LANG='es_ES'
COUNTRY_CODE='ES'
LOGIN='pepa'
 
client = erppeek.Client(server=SERVER)
 
if not DATABASE in client.db.list():
    print("The database does not exist yet, creating one!")
    client.create_database(ADMIN_PASSWORD, DATABASE, DEMO, LANG, USER_PASSWORD, LOGIN, COUNTRY_CODE)
else:
    print("The database " + DATABASE + " already exists.")
EOF
chmod 755 pyscript.py
./pyscript.py


            Activar para todos una opción que sólo se ve en modo desarrollador

            Para que una opción que sólo se activa en modo debug pueda estar visible siempre, basta con quitarle el grupo que tiene asignado que suele             ser: groups="base.group_no_one"

            Por ejemplo: para activar las transacciones en website_sale (salen en la opción del menú configuración) bastará con quitar en el             sale_order_view linea 251 la instrucción: groups="base.group_no_one"


            Instalar módulos desde la ventana de comandos

./odoo-bin -c odoo.conf -d DB_NAME -r ROLE -w PSW  -i model_name1,model_name2 

Ejemplo para instalar el sale y el account:

./odoo-bin -c /opt/myodoo/odoo/debian/odoo.conf -d myodoo -r pepe -w miclave -i sale,account


Usar SQL

     web_window_title = fields.Char(default=get_value)

    @api.onchange('web_window_title')
    def onchange_flash_settings(self):
        cr = self.env.cr
        query = """
            UPDATE res_config_settings 
                SET web_window_title=%s 
                WHERE id = (select max(id) from res_config_settings)
        """
        cr.execute(query,(self.web_window_title,))

 Actualizar Odoo al ultimo build

Vete a donde esté instalado el Odoo. En mi caso:

cd /opt/odoo/odoo-server 

Traete la ultima version con git

sudo git pull

 Mostrar imagen desde archivo

         En el XML

<field name="image" widget="image"/>

En el *py

import base64
image = fields.Binary(string='Image',default=lambda s: s._default_product_image(), help='My Image')

@api.model
def _default_product_image(self):

image_path = get_module_resource(
'nombre_modulo', 'carpeta', 'fichero.png'
)
with open(image_path, 'rb') as handler:
image_data = handler.read()
return tools.image_resize_image_big(
base64.b64encode(image_data)
)