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 hashes)

Uploaded Source

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