Controller Method before_save() no se ejecuta en archivo .py pero Server Script sí funciona

Mensaje para el equipo de Frappe:

Asunto: Controller Method before_save() no se ejecuta en archivo .py pero Server Script sí funciona

Hola equipo de Frappe,

Estoy siguiendo el tutorial oficial de “Controller Methods” (https://docs.frappe.io/framework/user/en/tutorial/controller-methods) pero tengo un problema con mi entorno.

Problema: El método before_save() en el archivo .py del DocType NO se ejecuta, pero el mismo código en un Server Script desde la UI funciona perfectamente.

Mi código en library_member.py:

python

import frappe
from frappe.model.document import Document

class LibraryMember(Document):
    def before_save(self):
        print("BEFORE_SAVE ejecutándose...")
        self.full_name = f'{self.first_name or ""} {self.last_name or ""}'.strip()

Lo que ya intenté: :white_check_mark: bench restart múltiples veces
:white_check_mark: bench clear-cache
:white_check_mark: bench set-config -g server_script_enabled true
:white_check_mark: Verificar que import frappe esté presente
:white_check_mark: Verificar nombres de campos (first_name, last_name, full_name)
:white_check_mark: Eliminar __pycache__
:white_check_mark: Desactivar el Server Script de la UI para evitar conflictos
:white_check_mark: Verificar que no hay errores en frappe.log
:white_check_mark: Agregar print() para debugging (no aparece nada en la terminal)

Entorno:

  • Frappe Framework v15.75.1

  • Docker (frappe/erpnext)

  • El mismo código en un Server Script funciona sin problemas

Observaciones:

  • No aparecen errores en Error Log ni en frappe.log

  • Los print() no se muestran en la terminal

  • El full_name permanece vacío al guardar

  • Es como si el método before_save() nunca se ejecutara

¿Hay alguna configuración adicional necesaria para que los Controller Methods funcionen en Docker? ¿O algún paso que pueda estar faltando?

¡Gracias por su ayuda!