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.

Filename, size & hash SHA256 hash help File type Python version Upload date
plonerelations.ATField-1.0.zip (16.5 kB) Copy SHA256 hash SHA256 Source None

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN SignalFx SignalFx Supporter DigiCert DigiCert EV certificate StatusPage StatusPage Status page