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