Usar python desde el menú de Odoo

Las acciónes del servidor las especificaremos en el "model_id" de la vista y permite activar el código del servidor desde cualquier lugar.

Las acciones disponibles son:

- Ejecutar código Python: esto ejecutará un bloque de código Python. Usamos esta acción aquí.

- Crear un nuevo registro: crea un nuevo registro en el modelo dado.

- Escribir en un registro: actualiza los valores de un registro que ya existe.

- Ejecutar varias acciones: esta acción permite definir una acción que desencadenará la ejecución de varias otras acciones del servidor.

En este ejemplo, usaremos la acción "ejecutar código Python". Aquí, he creado una función llamada " test_function " que funciona cuando hacemos 

click en el menú llamado "Testing" que saldrá a la derecha en el módulo CRM.

Para esto, primero, creamos un elemento de menú con el nombre "testing" y lo vinculamos a la acción ”action_make_testing”. 

Luego creamos una acción de servidor con id "action_make_testing" y especificamos el modelo base en el que la función debería

funcionar dando el model_id. Especificamos la función a llamar en la sección de código.

<?xml version="1.0" encoding="UTF-8"?>
<odoo>
    <data>
    <record id="action_make_testing" model="ir.actions.server">
		<field name="name">Make Testing</field>

		<field name="type">ir.actions.server</field>

		<field name="model_id" ref="crm.model_crm_lead"/>
        <field name="state">code</field>
        <field name="code">
                action = model.test_function()
        </field>

	</record>

    <menuitem id='menu_testing' name='Testing' sequence="100" parent="crm.crm_menu_root" action="action_make_testing"/>

   </data>
</odoo>
XML

Ahora que tenemos la acción configurada para el trabajo, ahora podemos definir la función Python dentro del modelo que especificamos en la acción. 

La función debe estar dentro del modelo que especificamos en el campo model_id. 

Aquí he creado una función que usa erppeek para conectarse a otro Odoo y crear un contacto.

from odoo import models
import erppeek

class ProductTest(models.Model):
    _inherit = "crm.lead"
    def test_function(self):
        database = "Mainodoo12"
        server= "http://192.168.47.128:8069"
        passw = "admin"
        user= "admin"

        cliente  = erppeek.Client(server,database,user,passw)

        cliente.model('res.partner').create({'name': 'Juan'})
XML


Tienes el ejemplo .