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

  • 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.tar.gz (4.3 kB view hashes)

Uploaded Source

Built Distributions

upfront.simplereferencefield-0.5-py2.6.egg (10.3 kB view hashes)

Uploaded Source

upfront.simplereferencefield-0.5-py2.4.egg (10.3 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