Beispiel #1
0
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))
Beispiel #2
0
 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()
Beispiel #3
0
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
Beispiel #4
0
    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()
Beispiel #5
0
    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 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
Beispiel #8
0
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)
Beispiel #10
0
    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)
Beispiel #11
0
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
Beispiel #12
0
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
Beispiel #13
0
 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')
Beispiel #14
0
 def createRootFolder(self):
     self.rootFolder = rootFolder()