Entradas

Mostrando entradas de mayo, 2024

24. Desarrollando con Odoo (19). Recapitulaciones. Menus. Seguridad: ir.model.access.csv, grupos y reglas

 1. Diferentes formas de crear un action window (que más tarde se asocia a un menu item): record y act_window Se muestran en el mismo color los campos que tienen la misma información <!-- EXPRESIÓN EQUIVALENTE (1) ----> <act_window id= " action_library_member " name= " Library Members " res_model= " library.member " view_mode= " tree,form " /> <!-- EXPRESIÓN EQUIVALENTE (2) ----> <record model= "ir.actions.act_window" id= " action_library_member " > <field name= "name" > Library Members </field> <field name= "res_model" > library.member </field> <field name= "view_mode" > tree,form </field> </record> <!-- INCLUIR CUALQUIERA DE LAS 2 EXPRESIONES EQUIVALENTES EN UN MENÚ --> <menuitem id= "menu_library_member" name= "Members" parent=

23. Desarrollando con Odoo (18). Errores inesperados.

Imagen
 1. DistributionNotFound: The 'pdfrw' distribution was not found and is required by the application Significa que no se encuentra la libraría correspondiente de python (en este caso 'pdfrw'). Para solucionarlo hay que: 1. En  __manifest__.py incluir las entradas de la dependencia que falta , pero clasificándola en su grupo . Si es de python o si es de tipo bin   " external_dependencies " : { " python " : [" pdfrw "," unicode "], " bin " : [ " libreoffice " ]} , 2. Instalar la dependencia python o de otra clase  Si es de python se instalará en principio de uno de estos dos metodos, dependiendo si python se ejecuta o no en entorno (environment) # DEPENDENCIAS DE PYTHON # 1. Sin entorno pip install pdfrw # 2. Con entorno. # Para ello hace falta ver que comando de python ejecuta odoo. # ejecutamos: # ps -ef | grep odoo # obtenemos entre otros: # /usr/bin/python3 /usr/bin/odoo --

22. Desarrollando con Odoo (17). ORM de atributos many2many y one2many. Arreglando el módulo hide_menu_partner de Cybrosys

0. Manejar atributos many2many y one2many por ORM Supongamos que tenemos : un registro existente llamado " record " con un atributo llamado " m2m_padre " tipo many2many y otro atributo " o2m_padre" de tipo one3many otro registro existente llamado " related " con su atributo " id " que es que forma parte de las relaciones anterior, y que tiene el atributo " m2m_hijo " many2many que engancha con " m2m_padre " y " m2o_hijo " que engancha con " o2m_padre " Veamos como hacemos las operaciones CRUD 1. Vincular el registro related a la relación many2many record .m2m = [ ( 4 , related .id ) ] 2. Vincular el registro related a la relación one2many La única manera es vincularlo desde el hijo related. related .m2o_hijo = record 3. Desvincular el registro related de la relación many2many record .m2m = [ ( 3 ,  related .id ) ]   4. Desvincular el registro related a la relación one2many La única manera es desv