dolmen.relations

צילום מסך תוכנה:
dolmen.relations
פרטי תוכנה:
גרסה: 0.5
טען תאריך: 11 May 15
מפתחים: Souheil Chelfouh
רשיון: ללא תשלום
פופולריות: 18

Rating: 1.5/5 (Total Votes: 2)

dolmen.relations היא שכבה דקה מעל zc.relation, המאפשרת יישום פשוט וברור של יחסים בין אובייקטים עצמאיים.
תחילת עבודה
כדי להדגים תכונות של החבילה, אנו קובעים הראשונים עד סביבה שפויה:
>>> מרכיב יבוא Zope
>>> מBTreeContainer יבוא zope.container.btree
>>> מ"ר = component.getGlobalSiteManager ()
>>> עדר = getRootFolder () ['עדר'] = BTreeContainer ()
קטלוג יחסים
dolmen.relations מספק רכיב הנקרא RelationCatalog שהוא אחראי על רישום היחסים ולמצוא אותם:
>>> מdolmen.relations לייבא RelationCatalog, ICatalog
>>> Sm.registerUtility (RelationCatalog (), ICatalog)
מיכל יחסים
כדי לאחסן את היחסים ולעורר את האירועים הדרושים, dolmen.relations מספק מיכל btree:
>>> מdolmen.relations RelationsContainer יבוא
>>> יחסים = עדר ['_ יחסים'] = RelationsContainer ()
תוכן
עכשיו, אנחנו צריכים קצת תוכן כדי להתחיל. בדיקות מודול מגדיר אובייקט מתמשך ממותה שאנחנו הולכים להשתמש כאן:
>>> מdolmen.relations.tests לייבא ממותה
>>> מנפרד = עדר ['מנפרד'] = ממותה ()
>>> גונתר = עדר ['גונתר'] = ממותה ()
כדי להיות בטוחים שהחפצים שלנו יהיו התעקשו ויינתן id int, אנו מתחייבים:
>>> עסקת יבוא
>>> Transaction.commit ()
יחסים
היחסים שהוצעו על ידי dolmen.relations הם של "A ל- B" הסוג. הם מאפשרים לך לקשר אובייקט מקור עם אובייקט יעד. למטרות בדיקות, אנחנו הולכים ליצור שני אובייקטי ממותה שהולכים לשמש כמקור ויעד:
>>> מdolmen.relations ערכי יבוא, כל
>>> מIIntIds יבוא zope.intid.interfaces
>>> מזהים = component.getUtility (IIntIds)
>>> Rcatalog = component.getUtility (ICatalog)
>>> Gunther_id = ids.getId (גונתר)
>>> Manfred_id = ids.getId (מנפרד)
ביחס פשוט
סוג הקשר הראשון וsimpliest הוא RelationValue. יחס זה נוצר עם id מקור והיעד id:
>>> יחסים ["פשוט"] = values.RelationValue (gunther_id, manfred_id)
אתה יכול לבצע שאילתה היחסים על ידי מתן id היעד ו / או מקור:
>>> = רשימה נמצאה (rcatalog.findRelations ({'target_id': manfred_id}))
>>> מצא
[<אובייקט dolmen.relations.values.RelationValue ב...>]
יש קשר תכונות ייעודיות לפתרון המקור או היעד:
>>> ביחס = found.pop ()
>>> ביחס
<אובייקט dolmen.relations.values.RelationValue ב...>
>>> Relation.source
<ממותה גונתר>
>>> Relation.target
<ממותה מנפרד>
ביחס תייג
הסוג השני של קשר הוא TaggedRelationValue. זה מאפשר לנו להוסיף לזוג מקור-יעד, רשימה של תגים כרשימה של מחרוזות Unicode:
>>> יחסים ["מתויג"] = values.TaggedRelationValue (
... Gunther_id, manfred_id, תגים = [u'grok ', u'dolmen'])
ביחס עדיין יכול להאסף עם שאילתא בסיסית:
>>> = רשימה נמצאה (rcatalog.findRelations ({'target_id': manfred_id}))
>>> מצא
[<אובייקט dolmen.relations.values.RelationValue ב...>, <אובייקט dolmen.relations.values.TaggedRelationValue ב...>]
זה גם יכול, עכשיו, להיות שאילתא באמצעות ערך תג:
>>> מצאה = רשימה (rcatalog.findRelations ({'תג': כל 'תגרוק' ()}))
>>> מצא
[]
>>> מצאה = רשימה (rcatalog.findRelations ({'תג': כל 'דרופל' ()}))
>>> מצא
[]
ביחס Stateful
הסוג השלישי של קשר הוא StatefulRelationValue. זה מוסיף, לזוג המקור-יעד, מידע המדינה כמחרוזת Unicode:
>>> יחסים ["stateful"] = values.StatefulRelationValue (
... Gunther_id, manfred_id, מדינה = u "פרטי")
ביחס עדיין יכול להאסף עם שאילתא בסיסית:
>>> = רשימה נמצאה (rcatalog.findRelations ({'target_id': manfred_id}))
>>> מצא
[<אובייקט dolmen.relations.values.RelationValue ב...>, <אובייקט dolmen.relations.values.TaggedRelationValue ב...>, <אובייקט dolmen.relations.values.StatefulRelationValue ב...>]
זה גם יכול, עכשיו, להיות שאילתא באמצעות מחרוזת המדינה:
>>> מצאה = רשימה (rcatalog.findRelations ({'מדינה': כל ("פרטית")}))
>>> מצא
[]
>>> מצאה = רשימה (rcatalog.findRelations ({'מדינה': כל ("ציבורית")}))
>>> מצא
[]
אירועים
בכל פעם שהוא אובייקט שנמחק, היחסים להשתמש בו כמקור או היעד יימחקו גם:
>>> דל עדר ['מנפרד']
>>> רשימת הדפסה (עדר ['_ יחסים']. מקשים ())
[]
>>> = רשימה נמצאה (rcatalog.findRelations ({'target_id': manfred_id}))
>>> מצא
[]

מה חדש בהודעה זו :

    • לתפוס שגיאה מintids כאשר מזהה הוסר. חזור אין במקרה זה.

    דרישות :

    • פייתון

  • תוכנות אחרות של יזם Souheil Chelfouh

    תגובות ל dolmen.relations

    תגובות לא נמצא
    להוסיף הערה
    הפעל את התמונות!