Store references on an object and not in the reference catalog
Project description
simplereferencefield is an Archeteyps reference field implementation
that stores the references directly on the object without indexing it in
the reference_catalog.
Create a document that references news.
>>> self.loginAsPortalOwner()
>>> self.portal.invokeFactory('Document', 'doc1')
'doc1'
>>> doc = self.portal['doc1']
>>> doc.setRelatedItems(self.portal.news)
>>> doc.reindexObject()
>>> doc.getRelatedItems()
[<ATFolder at /plone/news>]
The document has a relationship.
>>> doc.getRelationships()
['relatesTo']
Change relatedItems in the document's schema to be a
SimpleReferenceField.
>>> from Products.ATContentTypes.content.document import ATDocument
>>> from upfront.simplereferencefield import SimpleReferenceField
>>> ATDocument.schema['relatedItems'] = SimpleReferenceField(
... 'relatedItems', relationship='relatesTo', multiValued=1)
>>> ATDocument.schema['relatedItems'].type
'simplereference'
Create a document that references news.
>>> self.portal.invokeFactory('Document', 'doc2')
'doc2'
>>> doc = self.portal['doc2']
>>> doc.setRelatedItems(self.portal.news)
>>> doc.reindexObject()
>>> doc.getRelatedItems()
[<ATFolder at /plone/news>]
The document has no relationships.
>>> doc.getRelationships()
[]
If we reference doc1 from doc2, doc1 will have doc2 set as back
reference.
>>> self.portal.doc2.setRelatedItems(self.portal.doc1)
>>> self.portal.doc2.getRelatedItems()
[<ATDocument at /plone/doc1>]
>>> self.portal.doc1.getRelatedItems()
[<ATDocument at /plone/doc2>]
Back references are set by default but can be disabled.
>>> ATDocument.schema['relatedItems'] = SimpleReferenceField(
... 'relatedItems', relationship='relatesTo', multiValued=1,
... set_backreference=False)
>>> self.portal.invokeFactory('Document', 'doc3')
'doc3'
>>> self.portal.doc3.setRelatedItems(self.portal.doc1)
>>> self.portal.doc3.getRelatedItems()
[<ATDocument at /plone/doc1>]
>>> self.portal.doc1.getRelatedItems()
[<ATDocument at /plone/doc2>]
Changelog
=========
0.5.1
-----
* Make a new release with only a source distribution. Egg distribution
does not install properly with buildout.
0.5
---
* Initial release
that stores the references directly on the object without indexing it in
the reference_catalog.
Create a document that references news.
>>> self.loginAsPortalOwner()
>>> self.portal.invokeFactory('Document', 'doc1')
'doc1'
>>> doc = self.portal['doc1']
>>> doc.setRelatedItems(self.portal.news)
>>> doc.reindexObject()
>>> doc.getRelatedItems()
[<ATFolder at /plone/news>]
The document has a relationship.
>>> doc.getRelationships()
['relatesTo']
Change relatedItems in the document's schema to be a
SimpleReferenceField.
>>> from Products.ATContentTypes.content.document import ATDocument
>>> from upfront.simplereferencefield import SimpleReferenceField
>>> ATDocument.schema['relatedItems'] = SimpleReferenceField(
... 'relatedItems', relationship='relatesTo', multiValued=1)
>>> ATDocument.schema['relatedItems'].type
'simplereference'
Create a document that references news.
>>> self.portal.invokeFactory('Document', 'doc2')
'doc2'
>>> doc = self.portal['doc2']
>>> doc.setRelatedItems(self.portal.news)
>>> doc.reindexObject()
>>> doc.getRelatedItems()
[<ATFolder at /plone/news>]
The document has no relationships.
>>> doc.getRelationships()
[]
If we reference doc1 from doc2, doc1 will have doc2 set as back
reference.
>>> self.portal.doc2.setRelatedItems(self.portal.doc1)
>>> self.portal.doc2.getRelatedItems()
[<ATDocument at /plone/doc1>]
>>> self.portal.doc1.getRelatedItems()
[<ATDocument at /plone/doc2>]
Back references are set by default but can be disabled.
>>> ATDocument.schema['relatedItems'] = SimpleReferenceField(
... 'relatedItems', relationship='relatesTo', multiValued=1,
... set_backreference=False)
>>> self.portal.invokeFactory('Document', 'doc3')
'doc3'
>>> self.portal.doc3.setRelatedItems(self.portal.doc1)
>>> self.portal.doc3.getRelatedItems()
[<ATDocument at /plone/doc1>]
>>> self.portal.doc1.getRelatedItems()
[<ATDocument at /plone/doc2>]
Changelog
=========
0.5.1
-----
* Make a new release with only a source distribution. Egg distribution
does not install properly with buildout.
0.5
---
* Initial release
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file upfront.simplereferencefield-0.5.1.tar.gz
.
File metadata
- Download URL: upfront.simplereferencefield-0.5.1.tar.gz
- Upload date:
- Size: 4.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 139b7518355553a32a706c9699eb79a722d7d3ca096f5947559bb93b3bae3b60 |
|
MD5 | ce73951ab262d8cf3abaff648c79ebb9 |
|
BLAKE2b-256 | 3738bd80b99c40acedc26a5fe786f0badd96195bf491d157eb25ce34cb663d1b |