Skip to main content

ATField for plone.relations

Project description

Introduction

This package allows you to use plone.app.relations based relations in an Archetypes field. It exposes the same API as standard AT references do, making it a simple drop-in replacement.

Test

Prime tests, and set up our components and some basic content

>>> from plonerelations.ATField import tests
>>> tests.base_setup(portal)
>>> ob1 = portal['ob1']
>>> ob2 = portal['ob2']
>>> ob3 = portal['ob3']
>>> ob4 = portal['ob4']
>>> ob5 = portal['ob5']

Import fields, create instance of it, make it multi valued

>>> from plonerelations.ATField.ploneRelationsATField import PloneRelationsATField
>>> multiValueATField = PloneRelationsATField ()
>>> multiValueATField.multiValued = True
>>> multiValueATField.relationship = 'test multi valued relationship'

Make a single value one, for good measure

>>> singleValueATField = PloneRelationsATField ()
>>> singleValueATField.multiValued = False
>>> singleValueATField.relationship = 'test single relationship'

Create an Interface

>>> from zope.interface import Interface
>>> class IMyInterface (Interface):
...     pass

set relationship_interface on ATFields

>>> multiValueATField.relationship_interface = IMyInterface
>>> singleValueATField.relationship_interface = IMyInterface

make multi relationship from ob1 to objs 2 and 3, and a single relathionship from ob4 to ob5

>>> singleValueATField.set ( ob4, ob5 )
>>> multiValueATField.set ( ob1, [ob2,ob3] )

test if get method returns right objects. Multi returns a list

>>> list (multiValueATField.get( ob1 ))
[<Demo ob2>, <Demo ob3>]
>>> list (multiValueATField.getRaw( ob1, aslist=False))
['ob2', 'ob3']
>>> list (multiValueATField.getRaw( ob1, aslist=True ))
['ob2', 'ob3']

sinlge returns an object

>>> singleValueATField.get ( ob4 )
<Demo ob5>
>>> singleValueATField.getRaw( ob4, aslist=False )
'ob5'
>>> singleValueATField.getRaw( ob4, aslist=True )
['ob5']

double check if plone.app.interface returns the same

>>> from plone.app.relations import interfaces
>>> multiValueSource = interfaces.IRelationshipSource(ob1)
>>> singleValueSource = interfaces.IRelationshipSource(ob4)
>>> multiValueRelationships = list(multiValueSource.getRelationships())
>>> singleValueRelationship = list(singleValueSource.getRelationships())
>>> multiValueRelationships
[<Relationship 'test multi valued relationship' from (<Demo ob1>,) to (<Demo ob2>,)>, <Relationship 'test multi valued relationship' from (<Demo ob1>,) to (<Demo ob3>,)>]
>>> singleValueRelationship
[<Relationship 'test single relationship' from (<Demo ob4>,) to (<Demo ob5>,)>]

check if relathionshiops provide Interfaces

>>> IMyInterface.providedBy (singleValueRelationship[0])
True
>>> IMyInterface.providedBy (multiValueRelationships[0])
True

check if it deletes

>>> multiValueATField.set ( ob1, [ob2,ob5] )
>>> list(multiValueSource.getRelationships())
[<Relationship 'test multi valued relationship' from (<Demo ob1>,) to (<Demo ob2>,)>, <Relationship 'test multi valued relationship' from (<Demo ob1>,) to (<Demo ob5>,)>]
>>> singleValueATField.set ( ob4, ob1 )
>>> singleValueRelationship = list(singleValueSource.getRelationships())
>>> singleValueRelationship
[<Relationship 'test single relationship' from (<Demo ob4>,) to (<Demo ob1>,)>]

Changelog

1.0 - 2011-10-10

  • Removed __implements__ for compatibility with Plone 4. [hannosch]

  • Update distribution metadata, some code cleanup. [hannosch]

0.1 - May 20, 2008

  • First 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

plonerelations.ATField-1.0.zip (16.5 kB view details)

Uploaded Source

File details

Details for the file plonerelations.ATField-1.0.zip.

File metadata

File hashes

Hashes for plonerelations.ATField-1.0.zip
Algorithm Hash digest
SHA256 d2aa1fbca2f1df98d41b3a8ab17002e5f295255ec34b75ae1f63910ed53f4478
MD5 12330c1fbf5a9f9a13dc72e47847cdc8
BLAKE2b-256 baefe45b380d78fcda095da5e6c6e9d666f6c8e49a5ffda866c4fa3314a48a3a

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