dolmen.relations

Logiciel capture d'écran:
dolmen.relations
Détails logiciels:
Version: 0.5
Date de transfert: 11 May 15
Développeur: Souheil Chelfouh
Licence: Gratuit
Popularité: 18

Rating: 1.5/5 (Total Votes: 2)

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é
[]
La relation a des attributs dédiés à la résolution de la source ou la cible:
>>> Relation = found.pop ()
>>> Relation

>>> Relation.source

>>> Relation.target

relation avec le tag
Le deuxième type de relation est le TaggedRelationValue. Il nous permet d'ajouter au couple une source-cible, une liste des balises comme une liste de chaînes unicode:
>>> relations ["étiqueté"] = values.TaggedRelationValue (
... gunther_id, manfred_id, tags = [u'grok ', u'dolmen'])
La relation peut encore être récupéré avec une requête de base:
>>> trouvées = liste (rcatalog.findRelations ({'target_id': manfred_id}))
>>> Trouvé
[, ]
Il peut également, désormais, être interrogé à l'aide d'une valeur de tag:
>>> trouvées = liste (rcatalog.findRelations ({'tag': toute ('grok')}))
>>> Trouvé
[]
>>> trouvées = liste (rcatalog.findRelations ({'tag': toute ('Drupal')}))
>>> Trouvé
[]
relation Stateful
Le troisième type de relation est le StatefulRelationValue. Il ajoute, pour le couple source-cible, les informations d'état comme une chaîne de caractères Unicode:
>>> relations ["stateful"] = values.StatefulRelationValue (
... Gunther_id, manfred_id, state = u «privé»)
La relation peut encore être récupéré avec une requête de base:
>>> trouvées = liste (rcatalog.findRelations ({'target_id': manfred_id}))
>>> Trouvé
[, , ]
Il peut également, désormais, être interrogé en utilisant la chaîne de l'Etat:
>>> trouvées = liste (rcatalog.findRelations ({'État »: toute (' privés ')}))
>>> Trouvé
[]
>>> trouvées = liste (rcatalog.findRelations ({'État »: toute (' publics ')}))
>>> Trouvé
[]
Events
Chaque fois qu'un objet est supprimé, les relations qui l'utilisent comme source ou cible sont également supprimés:
>>> Del troupeau ['Manfred']
>>> liste d'impression (troupeau ['_ relations']. touches ())
[]
>>> 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

D'autres logiciels de développeur Souheil Chelfouh

Commentaires à dolmen.relations

Commentaires non trouvées
Ajouter un commentaire
Tourner sur les images!