 2740774b3d
			
		
	
	
		2740774b3d
		
	
	
	
	
		
			
			git-svn-id: svn://svn.cy55.de/Zope3/src/loops/trunk@2270 fd906abe-77d9-0310-91a1-e0d9ade77398
		
			
				
	
	
		
			54 lines
		
	
	
	
		
			2.1 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			54 lines
		
	
	
	
		
			2.1 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
| ===============================================================
 | |
| loops - Linked Objects for Organization and Processing Services
 | |
| ===============================================================
 | |
| 
 | |
|   ($Id$)
 | |
| 
 | |
|   >>> from zope import component
 | |
|   >>> from zope.traversing.api import getName
 | |
|   >>> from loops.common import adapted
 | |
|   >>> from loops.concept import Concept
 | |
|   >>> from loops.setup import addAndConfigureObject
 | |
| 
 | |
| Let's set up a loops site with basic and example concepts and resources.
 | |
| 
 | |
|   >>> from zope.app.testing.setup import placefulSetUp, placefulTearDown
 | |
|   >>> site = placefulSetUp(True)
 | |
| 
 | |
|   >>> from loops.constraint.testsetup import TestSite
 | |
|   >>> t = TestSite(site)
 | |
|   >>> concepts, resources, views = t.setup()
 | |
| 
 | |
|   >>> tType = concepts.getTypeConcept()
 | |
| 
 | |
| 
 | |
| Constraints - Restrict Predicates and Types for Concept and Resource Assignments
 | |
| ================================================================================
 | |
| 
 | |
| We create a person type and an institution type and a corresponding
 | |
| predicate.
 | |
| 
 | |
|   >>> tPerson = addAndConfigureObject(concepts, Concept, 'person',
 | |
|   ...                               title='Person', conceptType=tType)
 | |
|   >>> tInstitution = addAndConfigureObject(concepts, Concept, 'institution',
 | |
|   ...                               title='Institution', conceptType=tType)
 | |
|   >>> tPredicate = concepts.getPredicateType()
 | |
|   >>> isEmployedBy = addAndConfigureObject(concepts, Concept, 'isemployedby',
 | |
|   ...                               title='is Employed by', conceptType=tPredicate)
 | |
| 
 | |
| The static constraint concept type has already been created during setup.
 | |
| We create a simple constraint that
 | |
| 
 | |
|   >>> tStaticConstraint = concepts['staticconstraint']
 | |
|   >>> cstr01 = addAndConfigureObject(concepts, Concept, 'cstr01',
 | |
|   ...                   title='Demo Constraint', conceptType=tStaticConstraint)
 | |
| 
 | |
|   >>> aCstr01 = adapted(cstr01)
 | |
|   >>> aCstr01.predicates = [isEmployedBy]
 | |
|   >>> aCstr01.types = [tInstitution]
 | |
| 
 | |
| We can now use this constraint to control the parent concepts a person
 | |
| may be assigned to.
 | |
| 
 | |
|   >>> from loops.constraint.base import hasConstraint
 | |
|   >>> tPerson.assignParent(cstr01, hasConstraint)
 |