dolmen.relations est une mince couche au-dessus zc.relation, permettant une mise en œuvre simple et directe des relations entre les objets autonomes.
Mise en route
Afin de démontrer les fonctionnalités du paquet, nous avons d'abord mis en place un environnement sain:
>>> Du composant Zope d'importation
>>> From BTreeContainer d'importation zope.container.btree
>>> Sm = component.getGlobalSiteManager ()
>>> Troupeau = getRootFolder () [«troupeau»] = BTreeContainer ()
Le catalogue relations
dolmen.relations fournit un composant appelé RelationCatalog qui est en charge de l'enregistrement des relations et de les trouver:
>>> From dolmen.relations importer RelationCatalog, iCatalog
>>> Sm.registerUtility (RelationCatalog (), iCatalog)
Container Relations
Pour stocker les relations et de déclencher les événements nécessaires, dolmen.relations fournit un conteneur de btree:
>>> From dolmen.relations de RelationsContainer d'importation
>>> relations = troupeau ['_ relations'] = RelationsContainer ()
Contenu
Maintenant, nous avons besoin d'un peu de contenu pour commencer. Le module de tests définit un objet persistant Mammoth que nous allons utiliser ici:
>>> From dolmen.relations.tests importer Mammoth
>>> Manfred = troupeau ['Manfred'] = Mammoth ()
>>> Gunther = troupeau ['Gunther'] = Mammoth ()
Pour être sûr que nos objets sera persisté et seront accordées un int id, nous nous engageons:
>>> Opération d'importation
>>> Transaction.Commit ()
Relations
Les relations proposées par dolmen.relations sont de "A à B" de type. Ils vous permettent de lier un objet source à un objet cible. Que pour des tests, nous allons créer deux objets Mammoth qui vont être utilisées comme source et cible:
>>> À partir de valeurs dolmen.relations d'importation, toute
>>> From IIntIds zope.intid.interfaces d'importation
>>> ids = component.getUtility (IIntIds)
>>> Le catalogue = component.getUtility (iCatalog)
>>> Gunther_id = ids.getId (Gunther)
>>> Manfred_id = ids.getId (Manfred)
relation simple
La première et la plus simple type de relation est le RelationValue. Cette relation est créé avec un id de source et la cible id:
>>> Relations ["simple"] = values.RelationValue (gunther_id, manfred_id)
Vous pouvez interroger les relations en donnant la cible et / ou de la source id:
>>> trouvées = liste (rcatalog.findRelations ({'target_id': manfred_id}))
>>> Trouvé
[
Ce qui est nouveau dans cette version:
- Catch une erreur de les intids lorsque l'ID ont été supprimés. Retour Aucun dans ce cas.
Exigences :
- Python
Commentaires non trouvées