def bootStrapSubscriber(event): """The actual subscriber to the bootstrap IDataBaseOpenedEvent Boostrap a Zope3 instance given a database object This first checks if the root folder exists and has a site manager. If it exists, nothing else is changed. If no root folder exists, one is added. """ db, connection, root, root_folder = getInformationFromEvent(event) root_created = False if root_folder is None: root_created = True # ugh... we depend on the root folder implementation root_folder = rootFolder() root[ZopePublication.root_name] = root_folder if not ISite.providedBy(root_folder): site_manager = site.LocalSiteManager(root_folder) root_folder.setSiteManager(site_manager) transaction.commit() connection.close() zope.event.notify(interfaces.DatabaseOpenedWithRoot(db))
def createRootFolder(self): cx = self.db.open() root = cx.root() self.root_folder = rootFolder() root[ZopePublication.root_name] = self.root_folder transaction.commit() cx.close()
def placefulSetUp(site=False): placelessSetUp() zope.app.component.hooks.setHooks() setUpAnnotations() setUpDependable() setUpRegistered() setUpTraversal() setUpSiteManagerLookup() if site: site = rootFolder() createSiteManager(site, setsite=True) return site
def createRFAndSM(self): cx = self.db.open() root = cx.root() self.root_folder = rootFolder() root[ZopePublication.root_name] = self.root_folder self.site_manager = LocalSiteManager(self.root_folder) self.root_folder.setSiteManager(self.site_manager) sub_folder = Folder() self.root_folder["sub_folder"] = sub_folder sub_site_manager = LocalSiteManager(sub_folder) sub_folder.setSiteManager(sub_site_manager) transaction.commit() cx.close()
def testPlacefulAuth(self): setup.setUpTraversal() setup.setUpSiteManagerLookup() principalRegistry.defineDefaultPrincipal('anonymous', '') root = self.db.open().root() app = root[ZopePublication.root_name] app['f1'] = rootFolder() f1 = app['f1'] f1['f2'] = Folder() sm1 = setup.createSiteManager(f1) setup.addUtility(sm1, '', IAuthenticationUtility, AuthUtility1()) f2 = f1['f2'] sm2 = setup.createSiteManager(f2) setup.addUtility(sm2, '', IAuthenticationUtility, AuthUtility2()) transaction.commit() from zope.app.container.interfaces import ISimpleReadContainer from zope.app.container.traversal import ContainerTraverser ztapi.provideView(ISimpleReadContainer, IRequest, IPublishTraverse, '', ContainerTraverser) from zope.app.folder.interfaces import IFolder from zope.security.checker import defineChecker, InterfaceChecker defineChecker(Folder, InterfaceChecker(IFolder)) self.publication.beforeTraversal(self.request) self.assertEqual(list(queryInteraction().participations), [self.request]) self.assertEqual(self.request.principal.id, 'anonymous') root = self.publication.getApplication(self.request) self.publication.callTraversalHooks(self.request, root) self.assertEqual(self.request.principal.id, 'anonymous') ob = self.publication.traverseName(self.request, root, 'f1') self.publication.callTraversalHooks(self.request, ob) self.assertEqual(self.request.principal.id, 'test.anonymous') ob = self.publication.traverseName(self.request, ob, 'f2') self.publication.afterTraversal(self.request, ob) self.assertEqual(self.request.principal.id, 'test.bob') self.assertEqual(list(queryInteraction().participations), [self.request]) self.publication.endRequest(self.request, ob) self.assertEqual(queryInteraction(), None)
def setupEntryStructure(): """ Set up a reasonably complex folder structure ____________ rootFolder ________________________ / \ folder1 _______________________________ folder2 | \ | folder1_1 ________________ folder1_2 folder2_1 | \ \ | | folder1_1_1 folder1_1_2 folder1_1_3 folder1_2_1 folder2_1_1 """ root = rootFolder() entry = root[u'entry1'] = Entry() IEntryNav(entry).name = u'Pictorial' IEntryNav(entry).order = 2 entry = root[u'entry1'][u'entry1_1'] = Entry() IEntryNav(entry).name = u'Menschen' IEntryNav(entry).order = 12 entry = root[u'entry1'][u'entry1_1'][u'entry1_1_1'] = Entry() IEntryNav(entry).name = u'Frauen' IEntryNav(entry).order = 113 entry = root[u'entry1'][u'entry1_1'][u'entry1_1_2'] = Entry() IEntryNav(entry).name = u'Gruppen' IEntryNav(entry).order = 111 entry = root[u'entry1'][u'entry1_1'][u'entry1_1_3'] = Entry() IEntryNav(entry).name = u'Ausrutschen' IEntryNav(entry).order = 112 entry = root[u'entry1'][u'entry1_2'] = Entry() IEntryNav(entry).name = u'Verkehr' IEntryNav(entry).order = 11 entry = root[u'entry1'][u'entry1_2'][u'entry1_2_1'] = Entry() IEntryNav(entry).name = u'Pferd' entry = root[u'entry2'] = Entry() IEntryNav(entry).name = u'Sozial' IEntryNav(entry).order = 1 entry = root[u'entry2'][u'entry2_1'] = Entry() IEntryNav(entry).name = u'Hilfestellungen' IEntryNav(entry).order = 21 entry = root[u'entry2'][u'entry2_1'][u'entry2_1_1'] = Entry() IEntryNav(entry).name = u'Offiziell' IEntryNav(entry).order = 22 entry = root[u'entry3'] = Entry() #test if entries without name are ignored IEntryNav(entry).name = None return root
def setupEntryStructure(): """ Set up a reasonably complex folder structure ____________ rootFolder ________________________ / \ folder1 _______________________________ folder2 | \ | folder1_1 ________________ folder1_2 folder2_1 | \ \ | | folder1_1_1 folder1_1_2 folder1_1_3 folder1_2_1 folder2_1_1 """ root = rootFolder() entry = root[u'entry1'] = Entry() IEntryNav(entry).setEntryMenuName(u'Pictorial') IEntryNav(entry).setEntryMenuOrder(2) entry = root[u'entry1'][u'entry1_1'] = Entry() IEntryNav(entry).setEntryMenuName(u'Menschen') IEntryNav(entry).setEntryMenuOrder(12) entry = root[u'entry1'][u'entry1_1'][u'entry1_1_1'] = Entry() IEntryNav(entry).setEntryMenuName(u'Frauen') IEntryNav(entry).setEntryMenuOrder(113) entry = root[u'entry1'][u'entry1_1'][u'entry1_1_2'] = Entry() IEntryNav(entry).setEntryMenuName(u'Gruppen') IEntryNav(entry).setEntryMenuOrder(111) entry = root[u'entry1'][u'entry1_1'][u'entry1_1_3'] = Entry() IEntryNav(entry).setEntryMenuName(u'Ausrutschen') IEntryNav(entry).setEntryMenuOrder(112) entry = root[u'entry1'][u'entry1_2'] = Entry() IEntryNav(entry).setEntryMenuName(u'Verkehr') IEntryNav(entry).setEntryMenuOrder(11) entry = root[u'entry1'][u'entry1_2'][u'entry1_2_1'] = Entry() IEntryNav(entry).setEntryMenuName(u'Pferd') entry = root[u'entry2'] = Entry() IEntryNav(entry).setEntryMenuName(u'Sozial') IEntryNav(entry).setEntryMenuOrder(1) entry = root[u'entry2'][u'entry2_1'] = Entry() IEntryNav(entry).setEntryMenuName(u'Hilfestellungen') IEntryNav(entry).setEntryMenuOrder(21) entry = root[u'entry2'][u'entry2_1'][u'entry2_1_1'] = Entry() IEntryNav(entry).setEntryMenuName(u'Offiziell') IEntryNav(entry).setEntryMenuOrder(22) return root
def setUp(self): super(BasePublicationTests, self).setUp() from zope.security.management import endInteraction endInteraction() ztapi.provideAdapter(IHTTPRequest, IUserPreferredCharsets, HTTPCharsets) self.policy = setSecurityPolicy( simplepolicies.PermissiveSecurityPolicy) self.storage = DemoStorage('test_storage') self.db = db = DB(self.storage) ztapi.provideUtility(IAuthentication, principalRegistry) connection = db.open() root = connection.root() app = getattr(root, ZopePublication.root_name, None) if app is None: from zope.app.folder import rootFolder app = rootFolder() root[ZopePublication.root_name] = app transaction.commit() connection.close() self.app = app from zope.traversing.namespace import view, resource, etc ztapi.provideNamespaceHandler('view', view) ztapi.provideNamespaceHandler('resource', resource) ztapi.provideNamespaceHandler('etc', etc) self.request = TestRequest('/f1/f2') self.user = Principal('test.principal') self.request.setPrincipal(self.user) from zope.interface import Interface self.presentation_type = Interface self.request._presentation_type = self.presentation_type self.object = object() self.publication = ZopePublication(self.db)
def setUp(self): super(BasePublicationTests, self).setUp() from zope.security.management import endInteraction endInteraction() ztapi.provideAdapter(IHTTPRequest, IUserPreferredCharsets, HTTPCharsets) self.policy = setSecurityPolicy( simplepolicies.PermissiveSecurityPolicy ) self.storage = DemoStorage('test_storage') self.db = db = DB(self.storage) connection = db.open() root = connection.root() app = getattr(root, ZopePublication.root_name, None) if app is None: from zope.app.folder import rootFolder app = rootFolder() root[ZopePublication.root_name] = app transaction.commit() connection.close() self.app = app from zope.app.traversing.namespace import view, resource, etc ztapi.provideNamespaceHandler('view', view) ztapi.provideNamespaceHandler('resource', resource) ztapi.provideNamespaceHandler('etc', etc) self.request = TestRequest('/f1/f2') self.user = Principal('test.principal') self.request.setPrincipal(self.user) from zope.interface import Interface self.presentation_type = Interface self.request._presentation_type = self.presentation_type self.object = object() self.publication = ZopePublication(self.db)
def buildSampleFolderTree(): # set up a reasonably complex folder structure # # ____________ rootFolder ______________________________ # / \ \ # folder1 __________________ folder2 folder3 # | \ | | # folder1_1 ____ folder1_2 folder2_1 folder3_1 # | \ | | # folder1_1_1 folder1_1_2 folder1_2_1 folder2_1_1 root = rootFolder() root[u'folder1'] = Folder() root[u'folder1'][u'folder1_1'] = Folder() root[u'folder1'][u'folder1_1'][u'folder1_1_1'] = Folder() root[u'folder1'][u'folder1_1'][u'folder1_1_2'] = Folder() root[u'folder1'][u'folder1_2'] = Folder() root[u'folder1'][u'folder1_2'][u'folder1_2_1'] = Folder() root[u'folder2'] = Folder() root[u'folder2'][u'folder2_1'] = Folder() root[u'folder2'][u'folder2_1'][u'folder2_1_1'] = Folder() root[u"\N{CYRILLIC SMALL LETTER PE}" u"\N{CYRILLIC SMALL LETTER A}" u"\N{CYRILLIC SMALL LETTER PE}" u"\N{CYRILLIC SMALL LETTER KA}" u"\N{CYRILLIC SMALL LETTER A}3"] = Folder() root[u"\N{CYRILLIC SMALL LETTER PE}" u"\N{CYRILLIC SMALL LETTER A}" u"\N{CYRILLIC SMALL LETTER PE}" u"\N{CYRILLIC SMALL LETTER KA}" u"\N{CYRILLIC SMALL LETTER A}3"][ u"\N{CYRILLIC SMALL LETTER PE}" u"\N{CYRILLIC SMALL LETTER A}" u"\N{CYRILLIC SMALL LETTER PE}" u"\N{CYRILLIC SMALL LETTER KA}" u"\N{CYRILLIC SMALL LETTER A}3_1"] = Folder() return root
def keyrefSetUp(test): placelesssetup.setUp() component.provideAdapter(KeyReferenceToPersistent, adapts=(IPersistent,)) component.provideAdapter( SiteManagerAdapter, (zope.location.interfaces.ILocation,), zope.component.interfaces.IComponentLookup) component.provideAdapter( connectionOfPersistent, adapts=(IPersistent,), provides=IConnection) test.globs['db'] = db = DB() test.globs['conn'] = conn = db.open() test.globs['root'] = root = conn.root() test.globs['app'] = app = root['app'] = rootFolder() app.setSiteManager(LocalSiteManager(app)) zope.app.component.hooks.setSite(app) zope.app.component.hooks.setHooks() for i in range(30): id = 'ob%d' % i app[id] = Demo(id) transaction.commit() test.globs['Container'] = keyref.Container test.globs['Relationship'] = shared.Relationship
def _TestView__newContext(self): from zope.app.container.sample import SampleContainer from zope.app.folder import rootFolder root = rootFolder() container = SampleContainer() return contained(container, root, 'sample')
def createRootFolder(self): self.rootFolder = rootFolder()