dolmen.relations es una capa delgada por encima de zc.relation, lo que permite una implementación simple y directo de las relaciones entre los objetos independientes.
Introducción
Con el fin de mostrar las características del paquete, primero creado un ambiente sano:
>>> Del componente de importación zope
>>> From BTreeContainer importación zope.container.btree
>>> Sm = component.getGlobalSiteManager ()
>>> Manada = getRootFolder () ['manada'] = BTreeContainer ()
Catálogo Relaciones
dolmen.relations proporciona un componente llamado RelationCatalog que se encarga de registrar las relaciones y la búsqueda de ellos:
>>> From dolmen.relations importar RelationCatalog, iCatalog
>>> Sm.registerUtility (RelationCatalog (), iCatalog)
Contenedor Relaciones
Para almacenar las relaciones y desencadenar los eventos necesarios, dolmen.relations proporciona un contenedor árbolB:
>>> From dolmen.relations RelationsContainer importación
>>> relaciones manada = ['_ las relaciones'] = RelationsContainer ()
Contenido
Ahora, necesitamos algo de contenido para empezar. El módulo de pruebas define un objeto persistente Mammoth que vamos a utilizar aquí:
>>> From dolmen.relations.tests importar Mammoth
>>> Manfred = rebaño ['Manfred'] = Mammoth ()
>>> Gunther = rebaño ['Gunther'] = Mammoth ()
Para estar seguros de que nuestros objetos se persistieron y se les concederá un id int, nos comprometemos:
>>> Transacción de importación
>>> Transaction.Commit ()
Relaciones
Las relaciones propuestas por dolmen.relations son de la "A a B" tipo. Ellos permiten vincular un objeto de origen con un objeto de destino. Para efectos de pruebas, vamos a crear dos objetos Mammoth que van a ser utilizados como fuente y destino:
>>> From dolmen.relations valores de las importaciones, cualquiera
>>> From IIntIds zope.intid.interfaces importación
>>> ids = component.getUtility (IIntIds)
>>> Rcatalog = component.getUtility (iCatalog)
>>> Gunther_id = ids.getId (Gunther)
>>> Manfred_id = ids.getId (manfred)
relación simple
La primera y más simple tipo de relación es la RelationValue. Esta relación se crea con un identificador de origen y de destino Identificación:
>>> Relaciones ["simple"] = values.RelationValue (gunther_id, manfred_id)
Puede consultar las relaciones de dar el objetivo y / o fuente id:
>>> encontrado = lista (rcatalog.findRelations ({'target_id': manfred_id}))
>>> Encontrado
[
¿Qué hay de nuevo en esta versión:
- Atrapa un error de los intids cuando se ha eliminado el identificador. Retorno Ninguno en este caso.
Requisitos
- Python
Comentarios que no se encuentran