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.
Release files for plonerelations.ATField 1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| plonerelations.ATField-1.0.zip | 16.5 kB | Details |
Release files / plonerelations.ATField-1.0.zip
| Download URL | plonerelations.ATField-1.0.zip |
|---|---|
| Size | 16.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d2aa1fbca2f1df98d41b3a8ab17002e5f295255ec34b75ae1f63910ed53f4478
|
|
BLAKE2b-256 checksum How to use checksums |
baefe45b380d78fcda095da5e6c6e9d666f6c8e49a5ffda866c4fa3314a48a3a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |