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

Entradas populares de este blog

26. Desarrollando con Odoo (21). IMPORTANTE: Entorno de desarrollo. Instalar odoo. Modulos. scaffold. Recapitulaciones del capítulo 8 (Development, Test and Debug).

8. Desarrollando con Odoo (6). Herencia de clase en modelos. Herencia de vistas. Operaciones numeradas en Odoo ??