Estoy trabajando en un package que incluye un panel de control creado usando plone.app.registry. Seguí Timo's tutorial pero, cuando trato de agregar un registro adicional, estoy frente al infame KeyError: un campo para el que no hay registro.Mejores prácticas para paneles de control Plone
así que tengo un par de preguntas acerca de las mejores prácticas:
Mi primera pregunta es: un paquete debe eliminar del registro es en el momento de desinstalación?
He utilizado este en registry.xml de mi paquete:
<registry>
<records interface="collective.nitf.controlpanel.INITFSettings" />
</registry>
y esto en metadata.xml:
<metadata>
<version>1</version>
<dependencies>
<dependency>profile-plone.app.registry:default</dependency>
</dependencies>
</metadata>
embargo, la adición de un delete = "true" en el perfil de desinstalación no parece estar trabajando Intenté también enumerando todos los registros por nombre sin suerte, a menos que ejecute el paso manualmente en ZMI.
Por lo tanto, mi segunda pregunta es: ¿cómo elimino correctamente los registros del panel de control en el momento de la desinstalación?
Para probar si un registro está en el registro hago algo como esto:
def setUp(self):
self.portal = self.layer['portal']
setRoles(self.portal, TEST_USER_ID, ['Manager'])
# Set up the NITF settings registry
self.registry = Registry()
self.registry.registerInterface(INITFSettings)
def test_record_sections(self):
# Test that the sections record is in the control panel
record_sections = self.registry.records[
'collective.nitf.controlpanel.INITFSettings.sections']
self.failUnless('sections' in INITFSettings)
self.assertEquals(record_sections.value, set([]))
Una tercera pregunta podría ser la forma de probar si un registro se retiró a tiempo unisntall.
¿Alguna otra recomendación?
[Eliminar registros] (http: // PyPI .python.org/pypi/plone.app.registry # deleting-records) en plone.app.registry es un poco diferente y no funciona para mí; tienes que hacer algo como esto: Estaba intentando agregar un atributo de prefijo a [creación basada en una interfaz] (http://pypi.python.org/pypi/plone.app.registry# creating-records-based-on-an-interface), pero no está muy claro en la documentación. –
hvelarde