dolmen.relations

Software screenshot:
dolmen.relations
Rincian Software:
Versi: 0.5
Tanggal Upload: 11 May 15
Pengembang: Souheil Chelfouh
Lisensi: Gratis
Popularitas: 18

Rating: 1.5/5 (Total Votes: 2)

dolmen.relations adalah lapisan tipis di atas zc.relation, memungkinkan implementasi sederhana dan mudah hubungan mandiri antara objek.
Persiapan
Dalam rangka untuk menunjukkan fitur paket ini, pertama-tama kita mengatur lingkungan waras:
>>> Dari zope komponen impor
>>> Dari zope.container.btree impor BTreeContainer
>>> Sm = component.getGlobalSiteManager ()
>>> Kawanan = getRootFolder () ['kawanan'] = BTreeContainer ()
Katalog Hubungan
dolmen.relations menyediakan komponen yang disebut RelationCatalog yang bertugas mendaftarkan hubungan dan menemukan mereka:
>>> Dari dolmen.relations mengimpor RelationCatalog, ICatalog
>>> Sm.registerUtility (RelationCatalog (), ICatalog)
Hubungan kontainer
Untuk menyimpan hubungan dan memicu peristiwa yang dibutuhkan, dolmen.relations menyediakan wadah btree:
>>> Dari dolmen.relations impor RelationsContainer
>>> Hubungan = kawanan ['_ hubungan'] = RelationsContainer ()
konten
Sekarang, kita perlu beberapa konten untuk memulai. Tes modul mendefinisikan objek persisten Mammoth yang kita akan gunakan di sini:
>>> Dari dolmen.relations.tests mengimpor Mammoth
>>> Manfred = kawanan ['manfred'] = Mammoth ()
>>> Gunther = kawanan ['gunther'] = Mammoth ()
Untuk memastikan bahwa benda kami akan bertahan dan akan diberikan id int, kami berkomitmen:
>>> Transaksi impor
>>> Transaction.Commit ()
Hubungan
Hubungan yang diusulkan oleh dolmen.relations adalah dari "A ke B" jenis. Mereka memungkinkan Anda untuk menghubungkan objek sumber dengan objek target. Untuk tujuan tes, kita akan membuat dua benda Mammoth yang akan digunakan sebagai sumber dan target:
>>> Dari dolmen.relations nilai impor, setiap
>>> Dari IIntIds zope.intid.interfaces impor
>>> Ids = component.getUtility (IIntIds)
>>> Rcatalog = component.getUtility (ICatalog)
>>> Gunther_id = ids.getId (gunther)
>>> Manfred_id = ids.getId (manfred)
hubungan Simple
Yang pertama dan simpliest jenis relasinya adalah RelationValue. Hubungan ini dibuat dengan id sumber dan target id:
>>> Hubungan ["sederhana"] = values.RelationValue (gunther_id, manfred_id)
Anda dapat query hubungan dengan memberikan target dan / atau sumber id:
>>> Ditemukan = daftar (rcatalog.findRelations ({'target_id': manfred_id}))
>>> Ditemukan
[]
Relasi memiliki atribut yang didedikasikan untuk menyelesaikan target atau sumber:
>>> Hubungan = found.pop ()
>>> Hubungan

>>> Relation.source

>>> Relation.target

Tagged hubungan
Tipe kedua adalah hubungan TaggedRelationValue. Hal ini memungkinkan kita untuk menambah sebuah target sumber beberapa, daftar tag sebagai daftar string unicode:
>>> Hubungan ["tag"] = values.TaggedRelationValue (
... Gunther_id, manfred_id, tag = [u'grok ', u'dolmen'])
Sehubungan masih bisa diambil dengan query dasar:
>>> Ditemukan = daftar (rcatalog.findRelations ({'target_id': manfred_id}))
>>> Ditemukan
[, ]
Hal ini dapat juga, sekarang, query menggunakan nilai tag:
>>> Ditemukan = daftar (rcatalog.findRelations ({'tag': setiap ('grok')}))
>>> Ditemukan
[]
>>> Ditemukan = daftar (rcatalog.findRelations ({'tag': setiap ('drupal')}))
>>> Ditemukan
[]
hubungan Stateful
Jenis ketiga dari relasi adalah StatefulRelationValue. Ia menambahkan, ke sumber-sasaran pasangan, informasi negara sebagai string unicode:
>>> Hubungan ["stateful"] = values.StatefulRelationValue (
... Gunther_id, manfred_id, negara = u "pribadi")
Sehubungan masih bisa diambil dengan query dasar:
>>> Ditemukan = daftar (rcatalog.findRelations ({'target_id': manfred_id}))
>>> Ditemukan
[, , ]
Hal ini dapat juga, sekarang, query menggunakan string negara:
>>> Ditemukan = daftar (rcatalog.findRelations ({'negara': setiap ('pribadi')}))
>>> Ditemukan
[]
>>> Ditemukan = daftar (rcatalog.findRelations ({'negara': setiap ('publik')}))
>>> Ditemukan
[]
Acara
Setiap kali sebuah objek dihapus, hubungan menggunakannya sebagai sumber atau target akan dihapus juga:
>>> Del kawanan ['manfred']
>>> Daftar print (kawanan ['_ hubungan']. Tombol ())
[]
>>> Ditemukan = daftar (rcatalog.findRelations ({'target_id': manfred_id}))
>>> Ditemukan
[]

Apa yang baru dalam rilis ini:

  • Menangkap kesalahan dari intids ketika ID telah dihapus. Kembali ada dalam kasus ini.

Persyaratan :

  • Python

Perangkat lunak lain dari pengembang Souheil Chelfouh

Komentar untuk dolmen.relations

Komentar tidak ditemukan
Tambahkan komentar
Aktifkan gambar!