Skip to main content

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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

upfront.simplereferencefield-0.5.1.tar.gz (4.4 kB view details)

Uploaded Source

File details

Details for the file upfront.simplereferencefield-0.5.1.tar.gz.

File metadata

File hashes

Hashes for upfront.simplereferencefield-0.5.1.tar.gz
Algorithm Hash digest
SHA256 139b7518355553a32a706c9699eb79a722d7d3ca096f5947559bb93b3bae3b60
MD5 ce73951ab262d8cf3abaff648c79ebb9
BLAKE2b-256 3738bd80b99c40acedc26a5fe786f0badd96195bf491d157eb25ce34cb663d1b

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page