=============================================================== loops - Linked Objects for Organization and Processing Services =============================================================== Integration of external sources. ($Id$) Setting up a loops Site and Utilities ===================================== Let's do some basic set up >>> from zope import component, interface >>> from zope.traversing.api import getName >>> from zope.app.testing.setup import placefulSetUp, placefulTearDown >>> site = placefulSetUp(True) and build a simple loops site with a concept manager and some concepts (with a relation registry, a catalog, and all the type machinery - what in real life is done via standard ZCML setup or via local utility configuration): >>> from loops.tests.setup import TestSite >>> t = TestSite(site) >>> concepts, resources, views = t.setup() >>> len(concepts) + len(resources) 13 Accessing a Directory in the Filesystem ======================================= Let's just reuse the settings of cybertools.integrator. >>> from cybertools.integrator.tests.test_filesystem import testDir >>> from cybertools.integrator.filesystem import ContainerFactory, FileFactory >>> component.provideUtility(ContainerFactory(), name='filesystem') >>> component.provideUtility(FileFactory(), name='filesystem') >>> from loops.integrator.content.base import ExternalAccess >>> component.provideAdapter(ExternalAccess) >>> from loops.setup import addAndConfigureObject >>> from loops.concept import Concept >>> from loops.integrator.content.interfaces import IExternalAccess >>> typeConcept = concepts.getTypeConcept() >>> tExtAccess = addAndConfigureObject(concepts, Concept, 'extaccess', ... conceptType=typeConcept, typeInterface=IExternalAccess) >>> xa01 = addAndConfigureObject(concepts, Concept, 'xa01', ... conceptType=tExtAccess, ... providerName='filesystem', baseAddress=testDir) >>> from loops.common import adapted >>> xa01_ad =adapted(xa01) >>> directory = xa01_ad() >>> sorted(directory) ['index.html', 'sub'] Traversing Content Trees ======================== Fin de partie ============= >>> placefulTearDown()