Módulo Odoo

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 6

Como crear un módulo en Odoo

Idea de como realizar un módulo en odoo …

Comenzaremos con la base que tienes tu instalación de odoo, hay dos forma de hacerlo, una
es con scaffold, que crear o genera la estructura para que puedas comenzar a desarrollar tu módulo,
y la otra es que tú crees los archivos manualmente, esta es la estructura básica que debes tener para
el módulo, el nombre es a tu elección.

odoo scaffold my_module ~/src/odoo-addons/

Estructura resultante:

my_module
├── __init__.py
├── __manifest__.py
├── controllers
│ ├── __init__.py
│ └── controllers.py
├── demo
│ └── demo.xml
├── models
│ ├── __init__.py
│ └── models.py
├── security
│ └── ir.model.access.csv
└── views
├── templates.xml
└── views.xml

explicare un poco la estructura:

· models/models.py, un ejemplo de modelo con sus campos

· views/views.xml, un arbol y una vista de formulario, con los menus que lo abren.

· demo/demo.xml, registros de demostración para el modelo del ejemplo anterior.

· controllers/controllers.py, un ejemplo de controlador que implementa alguna rutas.

· views/templates.xml, dos ejemplos de vistas qweb utilizadas en las rutas de los controladores
anteriores.

· __manifest__.py, el archivo manifest de su modulo, incluyendo por ejemplo su tirulo, descripcion


y archivos de datos a cargar. solo debe descomentar el archivo de datos de la lista de control de
acceso.

Compartiré algo sencillo para que tengas la idea de como comenzar y luego podrás ir mejorando tu
código con lo tú necesitas, obviamente debes saber un poco o más que saber es entender como
funciona el código, ya que está basado en Python.
Te recomendó utilizar algún editor de código, el de tu preferencia, ya que será más fácil poder leer
el código. Comencemos creando nuestro módulo dentro de la carpeta Models, en esta carpeta debe
haber dos archivos, uno es el __init__.py, y el otro models.py, el primero tiene esta forma:

__init__.py

# -*- coding: utf-8 -*-

from . import models

Este archivo se usa para inicializar su módulo y es obligatorio en todos y cada uno de los módulos
que crees.

El segundo archivo es el models.py, obviamente tú le puedes colocar otro nombre el cual de


referencia al módulo que estás creando, su estructura es la siguiente.

models.py

# -*- coding: utf-8 -*-


from odoo import models, fields, api,

class CertInstructor(models.Model):
_name = 'instructor'
_descripcion = 'Registro Instructores'

name = fields.Char(string='Nombre', required=True )


date = fields.Date(string='Fecha', required=True)
card = fields.Many2one('fleet.vehicle.model.brand')
model = fields.Char(string='Modelo')
patente = fields.Char(string='Patente')

Como puedes ver en el código, se debe importa algunas bibliotecas, en el name colocas el nombre
del módulo que estás creando, luego vas creando los campos que requieres en tu módulo, como
consejo el name siempre debe ir, los demás campos puedes colocar de nombre referenciando al
campo, como ves en la imagen cada campo es según a lo que requieres, me explico si vas a colocar
el nombre obviamente es de tipo Char, te dejo un link para que puedas ver los distintos tipos de
campos que puedes incorporar https://odoo.rgbconsulting.com/blog/blog-6/tipos-de-campos-en-
odoo21#:~:text=En%20Odoo%2C%20se%20categorizan%20en,otros%20campos%20de%20la
%20vista

Teniendo tu clase ya creada con los campos que requieres para tú módulo, ahora tienes que crear tu
vista, dentro de esta vista estará tu formulario el cual recibirá la información y la vista donde podrás
ver la información ingresada.
Para ello nos dirigimos a la carpeta views, y crearemos un archivo con la extensión XML, esta es la
estructura de tipo formulario.

views.xml

<?xml version='1.0' encoding='utf-8'?>

<record id="view_instructor_form" model="ir.ui.view">


<field name="name">instructor.form</field>
<field name="model">instructor</field>
<field name="arch" type="xml">
<form string="Instructor">
<sheet>
<separator string="REGISTRAR INSTRUCTOR"/>
<div class="oe_title">
<h1>
<field name="name" placeholder="Nombre
Completo"/>
</h1>
</div>
<group col="4">
<field name="date" widget="date"/>
</group>
<group col="4" string="DATOS VEHICULO">
<field name="card"/>
<field name="patente"/>
<field name="model"/>
</group>
</sheet>
</form>
</field>
</record>

Este ejemplo corresponde al formulario, donde se recibirá la información dentro del mismo archivo
sé crear la vista tree, que es donde se muestra la información.

<record id="view_instructor_tree" model="ir.ui.view">


<field name="name">instructor.tree</field>
<field name="model">instructor</field>
<field name="arch" type="xml">
<tree string="Instructor">
<field name="name"/>
<field name="date"/>
<field name="card"/>
<field name="model"/>
<field name="patente"/>
</tree>
</field>
</record>
Obviamente tienes que comenzar en el archivo con la siguiente estructurá

<odoo>
<data>
<record>
</record>
</data>
</odoo>

Este es el tipo de acción más común, utilizado para presentar visualizaciones de un modelo a través
de vistas, teniendo tu vista, form y tree, debes crear el contexto de la vista acción de
ventana(windows), dentro del mismo archivo views.

<record id="action_instructor_view" model="ir.actions.act_window">


<field name="name">Instructor</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">instructor</field>
<field name="view_mode">tree,form</field>
</record>

Odoo tiene una forma flexible de definir menús, submenús y acciones. La principal atracción es que
se puede crear un menú y un submenú a partir del código y de la interfaz de usuario, lo que hace
que Odoo sea más fácil de usar, Añadimos el elemento de menú en el archivo view como este
ejemplo:

<menuitem id="menu_instructor" name="Instructor"


parent="menu_instructor_root" sequence="1"
action="action_instructor_view"/>

Ya tenemos casi listo nuestro módulo, ahora debemos darle permiso para que se muestre en
nuestro odoo, y para eso debemos generar el archivo CSV de nuestra carpeta security, su estructura
es la siguiente:

ir.model.access.csv

id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,
perm_unlink
access_certificados_usuario,certificados.usuario,model_certificado
s_cert,group_shool_startel_usuario,1,1,1,1

dejo lo que significa cada item

· id = identificación única para el permiso (Ejemplo: MY_MODULE_res_partner_manager)

· nombre = nombre único para el permiso (Ejemplo: res_partner manager)

· model_id/id = el nombre único del modelo de la clase en la que desea aplicar el permiso (Ejemplo
model_res_partner)

· group_id/id = se aplica el permiso de grupo (yopu puede definirlo en un archivo de grupo xml o
llamar a un grupo existente con sintaxis module.group_id)
· perm_read,perm_write,perm_create,perm_unlink = los 4 valores para el permiso relativo para
leer, escribir, crear y desvincular registros en una clase definida. 1 es Verdadero (puedes hacer esta
acción) y 0 es Falso (no puedes)

Como te podrás dar cuenta en la estructura del nuestra carpeta principal del my_modulo, hay dos
archivos, el _init_.py y el _manifest_.py.

El método init se usa principalmente para la inicialización del modelo o las operaciones de la base
de datos después de instalar o actualizar el módulo.

__init__.py

# -*- coding: utf-8 -*-

from . import models

El archivo de manifiesto sirve para declarar un paquete de python como un módulo de Odoo y para
especificar los metadatos del módulo.

Es un archivo llamado __manifest__.py contiene un solo diccionario de Python, donde cada clave
especifica los metadatos del módulo.

__manifest__.py

{
'name': "My Modulo",
'version': '15.0.4.0.0',
'sequence': 1,

'description': """
Módulo CRM para la gestión de registro...
""",

'author': "Odoo",
'website': "http://odoo.com",

'category': 'Escuela de Conduccion',


'license': 'LGPL-3',

# any module necessary for this one to work correctly


'depends': ['base'],

# always loaded
'data': [
'security/ir.model.access.csv',
'views/views.xml',
],
}
Los campos de manifiesto disponibles son:

name( str, requerido)

el nombre legible por humanos del módulo

version (str)

la versión de este módulo debe seguir las reglas de control de versiones semánticas

description (str)

descripción extendida para el módulo, en reStructuredText

author (str)

nombre del autor del módulo

website (str)

URL del sitio web del autor del módulo

depends (list(str))

Módulos de Odoo que deben cargarse antes que este, ya sea porque este módulo usa funciones que
ellos crean o porque altera los recursos que definen.

Cuando se instala un módulo, todas sus dependencias se instalan antes que él. Del mismo modo, las
dependencias se cargan antes de cargar un módulo.

data (list(str))

Lista de archivos de datos que siempre deben instalarse o actualizarse con el módulo. Una lista de
rutas desde el directorio raíz del módulo.

Link oficial …

https://www.odoo.com/documentation/17.0/es/administration/odoo_sh/getting_started/
first_module.html

También podría gustarte