my.packages es un paquete de arquetipos personalizado en el directorio src. Se agregan miles de elementos en la instancia de Plone con sus tipos. Quiero cambiar el nombre del paquete como my.package. Simplemente desinstalando my.packages e instalando my.package, encuentro http://localhost:8080/mysite/myfolder/my-item mostrando <persistent broken my.packages.content.mytype.MyType instance '\x00\x00\x00\x00\x00Un^'>
. ¿Debo hacer la migración? ¿O hay una manera simple de solucionar este problema?Cambiar el nombre de mis.paquetes a mi.paquete
Respuesta
Puede crear un alias para compatibilidad con versiones anteriores, mediante fudzing con sys.modules
. Para ello, en el paquete de __init__.py
:
import sys
sys.modules['my.packages'] = sys.modules[__name__]
De esta manera la maquinaria persistencia puede encontrar sus clases todavía.
Lo que sucede es que cuando las instancias de Archetypes persisten en el ZODB, el mecanismo de persistencia almacena una ruta de módulo para la clase (una ruta de python punteada como my.packages.types.foobar.FooBar
) en los datos almacenados. Al restaurar un objeto desde ZODB, esa misma ruta se usa para volver a crear sus instancias. Cuando cambia el nombre de su paquete, todas estas referencias están rotas.
Con el truco anterior, lo bueno es que si su objeto se cambió y se volvió a escribir en el ZODB en una transacción, se guardará la nueva ruta del módulo . Por lo tanto, es posible que haya una escritura en todas las instancias de Archetypes de este paquete para hacer que la migración sea permanente, de modo que pueda eliminar el problema anterior de nuevo.
- 1. Razones para cambiar el nombre de la propiedad a _property
- 2. Cambiar el nombre de un archivo a la papelera
- 3. Cambiar el nombre de los archivos a minúsculas en Powershell
- 4. ¿Puedo cambiar el nombre de `nohup.out`?
- 5. Cambiar el nombre de subprocesos en Java
- 6. Cambiar el nombre de columna en MySQL
- 7. MySQL - Cambiar el nombre de la columna
- 8. Cómo cambiar el nombre de PHPSESSID?
- 9. ¿Cómo cambiar el nombre de los directorios?
- 10. cambiar el nombre del proyecto y el nombre del paquete
- 11. cómo cambiar el nombre de tabcontrol
- 12. Emacs Cambiar el nombre de la variable
- 13. iPhone Cambiar el nombre de la aplicación
- 14. ¿Cómo cambiar el nombre de un directorio?
- 15. Cómo cambiar el nombre del modelo
- 16. Cambiar el nombre del nombre del argumento en JAX-WS
- 17. Cambiar el nombre del dispositivo Bluetooth Android
- 18. cambiar el nombre del proyecto androide
- 19. ¿Cambiar el nombre solo por nulo?
- 20. ¿Cambiar el nombre del archivo en Cocoa?
- 21. TimedRotatingFileHandler ¿Cambiar nombre de archivo?
- 22. Cambiar el nombre del proceso en Linux
- 23. ¿Cambiar el nombre del proceso en C#?
- 24. Cambiar el nombre del modelo con mongoid
- 25. MVC2: ¿Imposible cambiar el nombre con TextBoxFor?
- 26. Cómo cambiar el nombre del nodo XML
- 27. Reanudar un svn mover/cambiar el nombre
- 28. Cambiar el nombre del producto con mage.exe
- 29. Mongodb - Cambiar nombre db
- 30. JSON.Net - ¿Cambiar campo de tipo de $ a otro nombre?