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é:
bench restart múltiples veces
bench clear-cache
bench set-config -g server_script_enabled true
Verificar que import frappe esté presente
Verificar nombres de campos (first_name, last_name, full_name)
Eliminar __pycache__
Desactivar el Server Script de la UI para evitar conflictos
Verificar que no hay errores en frappe.log
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_namepermanece 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!