4. Desarrollando con Odoo (2). Introducción a modulos, vistas, modelos .. Añadir dependencias externas de Python a Odoo
Hemos creado un módulo utilizando "odoo scaffold nombre_modulo" dentro de la shell del contenedor con usuario root
#1. Entrar en el contenedor como root y ejecutando un bash de comandos docker exec -it --user root <nombre_contenedor_creado> bash #3. Ir al directorio /mnt/extra-addons y ejecutar odoo scaffold ximoapp01 cd /mnt/extra-addons odoo scaffold ximoapp01
Hemos hecho un enlace simbólico al directorio con lo que podemos ver los ficheros con Visual Studio
Veamos los ficheros a modificar
1. __manifest__.py
Quitar el comentario de la línea
'security/ir.model.access.csv',
Podemos añadir dependencias externas en la etiqueta external dependencies. Ejemplo
"external_dependencies": {"python": ["unidecode", "cryptography"]},
2. models/models.py
Quitamos comentarios y cambiamos el nombre para "task"
class task(models.Model): _name = 'ximoapp01.task' _description = 'ximoapp01.task'
3. security/ir.model.access.csv
Damos permiso a nuestro modelo task
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink access_ximoapp01_task,ximoapp01.task,model_ximoapp01_task,base.group_user,1,1,1,1
4. views/views.xml
1. Definimos la vista (amarillo) e introducimos la palabra task (de nuestro modelo), declarando solo el campo "name"
2. Definimos la acción (verde) que solamente engancha con la vista a tave del nombre del modelo (res_model). En este caso le decimos que tiene preferencia el tree y despues el form a traves de "view_mode"
3. Definimos los menús (azul) en 3 niveles top- categories -actions. Tenemos que expresar la jerarquía de menus con el parent e indicar la acción en el último nivel con action que apunta a la acción definida previamente
<odoo> <data> <!-- explicit list view definition --> <record model="ir.ui.view" id="ximoapp01.task_list"> <field name="name">ximoapp01 task list</field> <field name="model">ximoapp01.task</field> <field name="arch" type="xml"> <tree> <field name="name"/> </tree> </field> </record> <!-- actions opening views on models --> <record model="ir.actions.act_window" id="ximoapp01.action_task_window"> <field name="name">ximoapp01 task window</field> <field name="res_model">ximoapp01.task</field> <field name="view_mode">tree,form</field> </record> <!-- server action to the one above --> <!-- <record model="ir.actions.server" id="ximoapp01.action_server"> <field name="name">ximoapp01 server</field> <field name="model_id" ref="model_ximoapp01_ximoapp01"/> <field name="state">code</field> <field name="code"> action = { "type": "ir.actions.act_window", "view_mode": "tree,form", "res_model": model._name, } </field> </record> --> <!-- Top menu item --> <menuitem name="ximoapp01" id="ximoapp01.menu_root"/> <!-- menu categories --> <menuitem name="Management" id="ximoapp01.menu_1" parent="ximoapp01.menu_root"/> <!-- <menuitem name="Menu 2" id="ximoapp01.menu_2" parent="ximoapp01.menu_root"/> --> <!-- actions --> <menuitem name="Tasks" id="ximoapp01.menu_1_task_list" parent="ximoapp01.menu_1" action="ximoapp01.action_task_window"/> <!-- <menuitem name="Server to list" id="ximoapp01" parent="ximoapp01.menu_2" action="ximoapp01.action_server"/> --> </data> </odoo>
Le damos a instalar la aplicación. Para ello eliminamos el filtro de aplición y ponemos ximo y sale
Cada vez que hay un cambio de vista hay que Actualizar la aplicación
Y cada vez que hay cambio de modelo hay que reiniciar el contenedor. Para ello vamos a VS y le damos al icono de docker a la izquierda a mitad de altura
Comentarios
Publicar un comentario