¿Que deseamos hacer?
Trabajando con un modulo de OCA para el bloqueo de números de series o lotes para evitar su venta, comprobamos que era algo incomodo de trabajar cuando el producto poseía muchos lotes o números de serie. La idea era poder seleccionar un número de registros y poder cambiar su estado con tan solo una acción.
La decisión fue crear una nueva “Acción” que nos permita realizar este proceso, vamos a ello.
Creando el nuevo menuitem.
Odoo posee un menú de Acciones para realizar distintas operaciones sobre los registros seleccionados, a este le vamos a incorporar las nueva acción que necesitamos. Lo primero por tanto es localizar donde se encuentra ese menú.
Dentro del nuestro modulo y entrando en modo desarrollador podremos editar la vista : Lista

En esta vista obtenemos los datos fundamentales para insertar una nueva acción. En nuestro xml insertamos el siguiente elemento.
<record id="action_lock_stock_lot" model="ir.actions.server">
<field name="name">Lock Lot</field>
<field name="model_id" ref="stock.model_stock_production_lot"/>
<field name="binding_model_id" ref="stock.model_stock_production_lot"/>
<field name="state">code</field>
<field name="code">
if records:
records.action_lock_stock_lot()
</field>
</record>
Vamos a describirlo por partes, creamos un “record” cuyo identificador es único “action_lock_stock_lot” que pertenece al modelo “ir.actions.server”, con lo que estamos indicando a odoo que deseamos crear una acción de tipo “server”, para ejecutar código python al seleccionar esta opción de menú.
Le asignamos un nombre a la opción de menú “Lock Lot” para indicar claramente que al ejecutar esta nueva opción se bloquearan todos los lotes que estén seleccionados.
Tanto “model_id” como “binding_model_id” apuntan al mismo modelo en este caso, “stock.model_stock_production_lot”.
En el campo “state” indicamos que su valor va a ser “code”, asi señalamos que al realizar esta acción se ejecutara el código que esta en el apartado “code”.
En este caso llamamos al método “action_lock_stock” si hay registros seleccionados.
Ya dentro del modelo describimos el método, que lo único que hace es colocar el valor “locked” a verdadero sobre la colección de registros.
def action_lock_stock_lot(self):
for product in self:
product.locked = True
Os ruego que leáis el enlace que os dejo a continuación sobre las Server Actions, donde podréis descubrir más sobre esta potente herramienta que incorpora odoo.

Links
Modulo original.
Módulo modificado con las nuevas opciones.
Documentación de odoo.