dolmen.relations

Software captura de pantalla:
dolmen.relations
Detalles de software:
Versión: 0.5
Fecha de carga: 11 May 15
Promotor: Souheil Chelfouh
Licencia: Libre
Popularidad: 18

Rating: 1.5/5 (Total Votes: 2)

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
[]
La relación tiene atributos dedicadas a la resolución de la fuente o de destino:
>>> Relación = found.pop ()
>>> Relación

>>> Relation.source

>>> Relation.target

relación Etiquetado
El segundo tipo de relación es la TaggedRelationValue. Se nos permite añadir a la pareja un destino de origen, una lista de etiquetas como una lista de cadenas Unicode:
>>> relaciones ["etiquetados"] = values.TaggedRelationValue (
... gunther_id, manfred_id, etiquetas = [u'grok ', u'dolmen'])
La relación todavía puede ser recuperada con una consulta básica:
>>> encontrado = lista (rcatalog.findRelations ({'target_id': manfred_id}))
>>> Encontrado
[, ]
Puede también, ahora, se va a consultar utilizando un valor de etiqueta:
>>> encontrado = lista (rcatalog.findRelations ({'etiqueta': cualquier ('grok')}))
>>> Encontrado
[]
>>> encontrado = lista (rcatalog.findRelations ({'etiqueta': cualquier ('drupal')}))
>>> Encontrado
[]
relación con estado
El tercer tipo de relación es la StatefulRelationValue. Se añade, a la par origen-destino, información de estado como una cadena Unicode:
>>> relaciones ["stateful"] = values.StatefulRelationValue (
... Gunther_id, manfred_id, estado = u "privado")
La relación todavía puede ser recuperada con una consulta básica:
>>> encontrado = lista (rcatalog.findRelations ({'target_id': manfred_id}))
>>> Encontrado
[, , ]
Puede también, ahora, se va a consultar con la cadena estatal:
>>> encontrado = lista (rcatalog.findRelations ({'Estado': cualquier ('privados')}))
>>> Encontrado
[]
>>> encontrado = lista (rcatalog.findRelations ({'Estado': cualquier ('públicas')}))
>>> Encontrado
[]
Eventos
Cuando se elimina un objeto, se eliminan también las relaciones utilizando como origen o destino:
>>> Del rebaño ['Manfred']
>>> Lista de impresión (manada ['_ las relaciones']. teclas ())
[]
>>> 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

Otro software de desarrollador Souheil Chelfouh

Comentarios a la dolmen.relations

Comentarios que no se encuentran
Añadir comentario
A su vez en las imágenes!