Metadata-Version: 1.0
Name: plonerelations.ATField
Version: 1.0
Summary: ATField for plone.relations
Home-page: http://pypi.python.org/pypi/plonerelations.ATField
Author: Alec Mitchell, Mika Tasich
Author-email: apm13@columbia.edu
License: GPL
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.
        
Keywords: plone.relation field widget archetypes
Platform: UNKNOWN
Classifier: Framework :: Plone
Classifier: Programming Language :: Python
