def test_getNextUtility(self):
        # test local site vs. global site
        global_dummy = DummyUtility()
        provideUtility(global_dummy, IDummyUtility)

        local_dummy = DummyUtility()
        sm = zapi.getSiteManager()
        sm.registerUtility(IDummyUtility, local_dummy)

        self.assertEquals(zapi.getUtility(IDummyUtility), local_dummy)
        self.assertEquals(getNextUtility(self.folder.site, IDummyUtility),
                          global_dummy)

        # test local site vs. nested local site
        manage_addDummySite(self.folder.site, 'subsite')
        enableLocalSiteHook(self.folder.site.subsite)
        setSite(self.folder.site.subsite)

        sublocal_dummy = DummyUtility()
        sm = zapi.getSiteManager()
        sm.registerUtility(IDummyUtility, sublocal_dummy)

        self.assertEquals(zapi.getUtility(IDummyUtility), sublocal_dummy)
        self.assertEquals(
            getNextUtility(self.folder.site.subsite, IDummyUtility),
            local_dummy)
        self.assertEquals(getNextUtility(self.folder.site, IDummyUtility),
                          global_dummy)
Example #2
0
    def test_nestedSitesDontConflictButStillAcquire(self):
        # let's register a dummy utility in the dummy site
        dummy = DummyUtility()
        sm = zapi.getSiteManager()
        sm.registerUtility(IDummyUtility, dummy)

        # let's also create a subsite and make that our site
        manage_addDummySite(self.folder.site, 'subsite')
        enableLocalSiteHook(self.folder.site.subsite)
        setSite(self.folder.site.subsite)

        # we should still be able to lookup the original utility from
        # the site one level above
        self.assertEqual(zapi.getUtility(IDummyUtility), dummy)

        # now we register a dummy utility in the subsite and see that
        # its registration doesn't conflict
        subdummy = DummyUtility()
        sm = zapi.getSiteManager()
        sm.registerUtility(IDummyUtility, subdummy)

        # when we look it up we get the more local one now because the
        # more local one shadows the less local one
        self.assertEqual(zapi.getUtility(IDummyUtility), subdummy)

        # getAllUtilitiesFor gives us both the more local and the less
        # local utility (XXX not sure if this is the right semantics
        # for getAllUtilitiesFor)
        self.assertEqual(sets.Set(zapi.getAllUtilitiesRegisteredFor(IDummyUtility)),
                         sets.Set([subdummy, dummy]))

        # getUtilitiesFor will only find one, because the more local
        # one shadows the less local one
        self.assertEqual(list(zapi.getUtilitiesFor(IDummyUtility)),
                         [('', subdummy)])
Example #3
0
    def test_getNextUtility(self):
        # test local site vs. global site
        global_dummy = DummyUtility()
        provideUtility(global_dummy, IDummyUtility)

        local_dummy = DummyUtility()
        sm = zapi.getSiteManager()
        sm.registerUtility(IDummyUtility, local_dummy)

        self.assertEquals(zapi.getUtility(IDummyUtility), local_dummy)
        self.assertEquals(getNextUtility(self.folder.site, IDummyUtility),
                          global_dummy)

        # test local site vs. nested local site
        manage_addDummySite(self.folder.site, 'subsite')
        enableLocalSiteHook(self.folder.site.subsite)
        setSite(self.folder.site.subsite)

        sublocal_dummy = DummyUtility()
        sm = zapi.getSiteManager()
        sm.registerUtility(IDummyUtility, sublocal_dummy)

        self.assertEquals(zapi.getUtility(IDummyUtility), sublocal_dummy)
        self.assertEquals(getNextUtility(self.folder.site.subsite, IDummyUtility),
                          local_dummy)
        self.assertEquals(getNextUtility(self.folder.site, IDummyUtility),
                          global_dummy)
Example #4
0
    def test_ZopeVersion(self):
        runtime_info = self._Test__new()

        # we expect that there is no utility
        self.assertEqual(runtime_info.getZopeVersion(), u"Unavailable")

        zapi.getSiteManager().provideUtility(IZopeVersion, TestZopeVersion())
        self.assertEqual(runtime_info.getZopeVersion(),
                                         stupid_version_string)
    def test_getSiteManagerHook(self):
        from Products.Five.site.localsite import FiveSiteManager
        from Products.Five.site.utility import SimpleLocalUtilityRegistry

        local_sm = zapi.getSiteManager(None)
        self.failIf(local_sm is zapi.getGlobalSiteManager())
        self.failUnless(isinstance(local_sm, FiveSiteManager))

        local_sm = zapi.getSiteManager(self.folder.site)
        self.failIf(local_sm is zapi.getGlobalSiteManager())
        self.failUnless(isinstance(local_sm, FiveSiteManager))

        sm = zapi.getSiteManager()
        self.failUnless(isinstance(sm.utilities, SimpleLocalUtilityRegistry))
Example #6
0
    def test_getSiteManagerHook(self):
        from Products.Five.site.localsite import FiveSiteManager
        from Products.Five.site.utility import SimpleLocalUtilityRegistry

        local_sm = zapi.getSiteManager(None)
        self.failIf(local_sm is zapi.getGlobalSiteManager())
        self.failUnless(isinstance(local_sm, FiveSiteManager))

        local_sm = zapi.getSiteManager(self.folder.site)
        self.failIf(local_sm is zapi.getGlobalSiteManager())
        self.failUnless(isinstance(local_sm, FiveSiteManager))

        sm = zapi.getSiteManager()
        self.failUnless(isinstance(sm.utilities, SimpleLocalUtilityRegistry))
    def test_getUtilitiesNoUtilitiesFolder(self):
        sm = zapi.getSiteManager()

        self.failUnless(sm.queryUtility(IDummyUtility) is None)
        self.assertEquals(list(sm.getUtilitiesFor(IDummyUtility)), [])
        self.assertEquals(list(sm.getAllUtilitiesRegisteredFor(IDummyUtility)),
                          [])
Example #8
0
    def testDefaultSkin(self):
        request = TestRequest()

        self.assertEqual(zapi.queryMultiAdapter((ob, request), name='test'),
                         None)
        xmlconfig(StringIO(template % (
            '''
            <browser:layer name="zmi" />
            <browser:skin name="zmi" layers="zmi" />
            <browser:defaultSkin name="zmi" />
            <browser:page name="test"
                class="zope.app.component.tests.views.VZMI"
                layer="zmi"
                for="zope.app.component.tests.views.IC"
                permission="zope.Public"
                attribute="index"
                />
            <browser:page name="test"
                class="zope.app.component.tests.views.V1"
                for="zope.app.component.tests.views.IC"
                permission="zope.Public"
                attribute="index"
                />
            '''
            )))

        # Simulate Zope Publication behavior in beforeTraversal()
        adapters = zapi.getSiteManager().adapters
        skin = adapters.lookup((providedBy(request),), IDefaultSkin, '')
        directlyProvides(request, skin)

        v = zapi.queryMultiAdapter((ob, request), name='test')
        self.assert_(issubclass(v.__class__, VZMI))
Example #9
0
    def test_local_utilities(self):
        gsm = zapi.getGlobalSiteManager()
        gsm.provideUtility(IInterface, Foo("global"))
        gsm.provideUtility(IInterface, Foo("global bob"), name="bob")

        sm = zapi.getSiteManager(self.rootFolder)
        default = traverse(self.rootFolder, "++etc++site/default")
        default['foo'] = Foo("local")
        foo = default['foo']
        cm = default.registrationManager

        for name in ('', 'bob'):
            registration = UtilityRegistration(name, IInterface, foo)
            cname = cm.addRegistration(registration)
            registration = traverse(cm, cname)

            gout = name and "foo global "+name or "foo global"
            self.assertEqual(sm.queryUtility(IInterface, name).foo(), gout)

            registration.status = ActiveStatus
            self.assertEqual(
                sm.queryUtility(IInterface, name).foo(), "foo local")

            registration.status = InactiveStatus
            self.assertEqual(sm.queryUtility(IInterface, name).foo(), gout)
Example #10
0
 def test_getUtilitiesNoUtilitiesFolder(self):
     sm = zapi.getSiteManager()
     #XXX test whether sm really is a local site...
     self.failUnless(sm.queryUtility(IDummyUtility) is None)
     self.assertEquals(list(sm.getUtilitiesFor(IDummyUtility)), [])
     self.assertEquals(list(sm.getAllUtilitiesRegisteredFor(IDummyUtility)),
                       [])
    def update(self):
        message = self.applyUpdates()

        self.configBase = zapi.absoluteURL(zapi.getSiteManager(), self.request)

        registrations = self.context.info()

        # This is OK because registrations is just a list of dicts
        registrations = removeSecurityProxy(registrations)

        inactive = 1
        for info in registrations:
            if info['active']:
                inactive = None
            else:
                info['active'] = False

            reg = info['registration']
            info['summary'] = reg.implementationSummary()
            info['id'] = zapi.getPath(reg)

        # Add a dummy registration since the stack removes trailing None.
        registrations.append({"active": False,
                              "id": "disable",
                              "summary": ""})

        self.inactive = inactive
        self.registrations = registrations

        self.message = message
Example #12
0
    def __BBB_old_getComponent(self, path):
        service_manager = zapi.getSiteManager(self)

        # Get the root and unproxy it
        if path.startswith("/"):
            # Absolute path
            root = removeAllProxies(zapi.getRoot(service_manager))
            component = zapi.traverse(root, path)
        else:
            # Relative path.
            ancestor = self.__parent__.__parent__
            component = zapi.traverse(ancestor, path)

        if self.permission:
            if type(component) is Proxy:
                # There should be at most one security Proxy around an object.
                # So, if we're going to add a new security proxy, we need to
                # remove any existing one.
                component = removeSecurityProxy(component)

            interface = self.getInterface()

            checker = InterfaceChecker(interface, self.permission)

            component = Proxy(component, checker)

        return component
Example #13
0
 def isInIctSite(self):
     """ this supervisor is under a ict site
     """
     sitem = zapi.getSiteManager(self)
     site = zapi.getParent(sitem)
     if IIctSite.providedBy(site):
         return True
     return False
Example #14
0
 def getSiteManagementFolder(self, tool):
     """Get the site management folder for this tool."""
     sm = zapi.getSiteManager()
     if not tool.folder in sm:
         folder = site.SiteManagementFolder()
         zope.event.notify(objectevent.ObjectCreatedEvent(folder))
         sm[tool.folder] = folder            
     return sm[tool.folder]
Example #15
0
 def toolExists(self, interface, name=''):
     """Check whether a tool already exists in this site"""
     sm = zapi.getSiteManager()
     for reg in sm.registrations():
         if isinstance(reg, site.UtilityRegistration):
             if reg.name == name and reg.provided == interface:
                 return True
     return False
Example #16
0
 def getInterfaceURL(self, name):
     sm = zapi.getSiteManager(self.context)
     try:
         getInterface(self.context, name)
         url = zapi.absoluteURL(sm, self.request)
     except ComponentLookupError:
         return ""
     return "%s/interfacedetail.html?id=%s" % (url, name)
Example #17
0
 def __call__(self):
     sm = zapi.getSiteManager()
     result = ('zapi.getSiteManager() is zapi.getGlobalSiteManager(): %s\n'
               'IFiveUtilityRegistry.providedBy(utility_service): %s\n'
               'isinstance(zapi.getSiteManager(), FiveSiteManager): %s'
               % (sm is zapi.getGlobalSiteManager(),
                  IFiveUtilityRegistry.providedBy(sm.utilities),
                  isinstance(sm, FiveSiteManager)))
     return result
Example #18
0
 def __call__(self):
     sm = zapi.getSiteManager()
     result = ('zapi.getSiteManager() is zapi.getGlobalSiteManager(): %s\n'
               'IFiveUtilityRegistry.providedBy(utility_service): %s\n'
               'isinstance(zapi.getSiteManager(), FiveSiteManager): %s' %
               (sm is zapi.getGlobalSiteManager(),
                IFiveUtilityRegistry.providedBy(
                    sm.utilities), isinstance(sm, FiveSiteManager)))
     return result
Example #19
0
def UserPreferences(context=None):
    """Adapts an ``ILocation`` object to the ``IUserPreferences`` interface."""
    if context is None:
        context = zapi.getSiteManager()
    rootGroup = zapi.getUtility(IPreferenceGroup)
    rootGroup = rootGroup.__bind__(context)
    rootGroup.__name__ = '++preferences++'
    zope.interface.alsoProvides(rootGroup, IContainmentRoot)
    return rootGroup
Example #20
0
 def queryLocalService(self, name, default=None):
     if name in _builtinServices:
         return self
     service = zapi.queryUtility(IService, name, self)
     if service is None:
         return default
     if zapi.getSiteManager(service) is not self:
         return default
     return service
Example #21
0
    def publishTraverse(self, request, name):
        '''See interface IBrowserPublisher'''

        resource = zapi.queryAdapter(request, name=name)
        if resource is None:
            raise NotFound(self, name)

        sm = zapi.getSiteManager()
        locate(resource, sm, name)
        return resource
    def test_registerUtilityOnUtilityRegistry(self):
        utils = zapi.getSiteManager().utilities
        dummy = DummyUtility()
        utils.registerUtility(IDummyUtility, dummy, 'dummy')

        self.assertEquals(zapi.getUtility(IDummyUtility, name='dummy'), dummy)
        self.assertEquals(list(zapi.getUtilitiesFor(IDummyUtility)),
                          [('dummy', dummy)])
        self.assertEquals(
            list(zapi.getAllUtilitiesRegisteredFor(IDummyUtility)), [dummy])
Example #23
0
    def test_registerUtilityOnUtilityRegistry(self):
        utils = zapi.getSiteManager().utilities
        dummy = DummyUtility()
        utils.registerUtility(IDummyUtility, dummy, 'dummy')

        self.assertEquals(zapi.getUtility(IDummyUtility, name='dummy'), dummy)
        self.assertEquals(list(zapi.getUtilitiesFor(IDummyUtility)), 
                          [('dummy', dummy)])
        self.assertEquals(list(zapi.getAllUtilitiesRegisteredFor(
            IDummyUtility)), [dummy])
Example #24
0
    def test_registerUtilityOnSiteManager(self):
        sm = zapi.getSiteManager()
        self.failUnless(IRegisterUtilitySimply.providedBy(sm))
        dummy = DummyUtility()
        sm.registerUtility(IDummyUtility, dummy, 'dummy')

        self.assertEquals(zapi.getUtility(IDummyUtility, name='dummy'), dummy)
        self.assertEquals(list(zapi.getUtilitiesFor(IDummyUtility)), 
                          [('dummy', dummy)])
        self.assertEquals(list(zapi.getAllUtilitiesRegisteredFor(
            IDummyUtility)), [dummy])
    def test_registerUtilityOnSiteManager(self):
        sm = zapi.getSiteManager()
        self.failUnless(IRegisterUtilitySimply.providedBy(sm))
        dummy = DummyUtility()
        sm.registerUtility(IDummyUtility, dummy, 'dummy')

        self.assertEquals(zapi.getUtility(IDummyUtility, name='dummy'), dummy)
        self.assertEquals(list(zapi.getUtilitiesFor(IDummyUtility)),
                          [('dummy', dummy)])
        self.assertEquals(
            list(zapi.getAllUtilitiesRegisteredFor(IDummyUtility)), [dummy])
    def test_registeringTwiceIsConflict(self):
        dummy1 = DummyUtility()
        dummy2 = DummyUtility()
        sm = zapi.getSiteManager()
        sm.registerUtility(IDummyUtility, dummy1)
        self.assertRaises(ValueError, sm.registerUtility, IDummyUtility,
                          dummy2)

        sm.registerUtility(IDummyUtility, dummy1, 'dummy')
        self.assertRaises(ValueError, sm.registerUtility, IDummyUtility,
                          dummy2, 'dummy')
Example #27
0
 def __call__(self):
     sm = zapi.getSiteManager()
     result = {
         'zapi.getSiteManager() is zapi.getGlobalSiteManager()':
         sm is zapi.getGlobalSiteManager(),
         'IFiveUtilityRegistry.providedBy(utility_service)':
         IFiveUtilityRegistry.providedBy(sm.utilities),
         'isinstance(zapi.getSiteManager(), FiveSiteManager)':
         isinstance(sm, FiveSiteManager),
     }
     return pprint.pformat(result)
Example #28
0
    def test_registeringTwiceIsConflict(self):
        dummy1 = DummyUtility()
        dummy2 = DummyUtility()
        sm = zapi.getSiteManager()
        sm.registerUtility(IDummyUtility, dummy1)
        self.assertRaises(ValueError, sm.registerUtility,
                          IDummyUtility, dummy2)

        sm.registerUtility(IDummyUtility, dummy1, 'dummy')
        self.assertRaises(ValueError, sm.registerUtility,
                          IDummyUtility, dummy2, 'dummy')
Example #29
0
def queryNextSiteManager(context, default=None):
    """Get the next site manager.

    If the site manager of the given context is the global site manager, then
    `default` is returned.
    """
    sm = zapi.getSiteManager(context)
    if zope.component.site.IGlobalSiteManager.providedBy(sm):
        return default
    if sm.next is None:
        return zapi.getGlobalSiteManager()
    return sm.next
Example #30
0
    def test_registerTwoUtilitiesWithSameNameDifferentInterface(self):
        sm = zapi.getSiteManager()
        self.failUnless(IRegisterUtilitySimply.providedBy(sm))
        dummy = DummyUtility()
        superdummy = DummyUtility()
        directlyProvides(superdummy, ISuperDummyUtility)
        sm.registerUtility(IDummyUtility, dummy, 'dummy')
        sm.registerUtility(ISuperDummyUtility, superdummy, 'dummy')

        self.assertEquals(zapi.getUtility(IDummyUtility, 'dummy'), dummy)
        self.assertEquals(zapi.getUtility(ISuperDummyUtility, 'dummy'),
                          superdummy)
Example #31
0
 def create_indices(self):
     """
     will create all non existent indices in database
     """
     sitem = zapi.getSiteManager(self)
     site = zapi.getParent(sitem)
     tmpEvent = TmpEvent()
     if IZopeSite.providedBy(site) or \
         IIctSite.providedBy(site) or \
         zapi.getParent(site) is None:
         tmpEvent.object = site
         createLocalUtils(tmpEvent)
    def test_registerTwoUtilitiesWithSameNameDifferentInterface(self):
        sm = zapi.getSiteManager()
        self.failUnless(IRegisterUtilitySimply.providedBy(sm))
        dummy = DummyUtility()
        superdummy = DummyUtility()
        directlyProvides(superdummy, ISuperDummyUtility)
        sm.registerUtility(IDummyUtility, dummy, 'dummy')
        sm.registerUtility(ISuperDummyUtility, superdummy, 'dummy')

        self.assertEquals(zapi.getUtility(IDummyUtility, 'dummy'), dummy)
        self.assertEquals(zapi.getUtility(ISuperDummyUtility, 'dummy'),
                          superdummy)
Example #33
0
    def items(self):
        sm = zapi.getSiteManager()
        ifaces = {}
        while sm is not None:
            for reg in sm.registrations():
                if isinstance(reg, UtilityRegistration):
                    path = getPythonPath(reg.provided)
                    ifaces[path] = UtilityInterface(self, path, reg.provided)
            sm = queryNextSiteManager(sm)

        items = ifaces.items()
        items.sort(lambda x, y: cmp(x[0].split('.')[-1], y[0].split('.')[-1]))
        return items
Example #34
0
    def test_query_get_Utility_delegates_to_global(self):
        gsm = zapi.getGlobalSiteManager()
        gsm.provideUtility(IInterface, Foo("global"))
        gsm.provideUtility(IInterface, Foo("global bob"), name="bob")

        sm = zapi.getSiteManager(self.rootFolder)
        self.assert_(gsm != sm)

        # If queryUtility works on the site manager, getUtility in zapi must
        # also work.
        self.assertEqual(sm.queryUtility(IInterface).foo(), "foo global")
        self.assertEqual(sm.queryUtility(IInterface, "bob").foo(),
                         "foo global bob")
Example #35
0
    def setUp(self):
        from zope.app.folder import Folder, rootFolder

        ReferenceSetupMixin.setUp(self)

        sm = zapi.getSiteManager(self.root)
        self.utility = setup.addUtility(sm, '1', IIntIds, IntIds())

        self.root['folder1'] = Folder()
        self.root._p_jar = ConnectionStub()
        self.root['folder1']['folder1_1'] = self.folder1_1 = Folder()
        self.root['folder1']['folder1_1']['folder1_1_1'] = Folder()

        sm1_1 = setup.createSiteManager(self.folder1_1)
        self.utility1 = setup.addUtility(sm1_1, '2', IIntIds, IntIds())
def SimpleRegistrationRemoveSubscriber(registration, event):
    """Receive notification of remove event."""
    sm = zapi.getSiteManager(registration)
    removed = event.object
    if (sm == removed) or inside(sm, removed):
        # we don't really care if the registration is active, since the site
        # is going away.
        return

    objectstatus = registration.status

    if objectstatus == interfaces.ActiveStatus:
        try:
            objectpath = zapi.getPath(registration)
        except: # XXX
            objectpath = str(registration)
        raise DependencyError("Can't delete active registration (%s)"
                              % objectpath)
Example #37
0
def SimpleRegistrationRemoveSubscriber(registration, event):
    """Receive notification of remove event."""
    sm = zapi.getSiteManager(registration)
    removed = event.object
    if (sm == removed) or inside(sm, removed):
        # we don't really care if the registration is active, since the site
        # is going away.
        return

    objectstatus = registration.status

    if objectstatus == interfaces.ActiveStatus:
        try:
            objectpath = zapi.getPath(registration)
        except: # TODO decide if this is really the best fall-back plan
            objectpath = str(registration)
        msg = _("Can't delete active registration (${path})",
                mapping={u'path': objectpath})
        raise DependencyError(msg)
Example #38
0
    def test_utilitiesHaveProperAcquisitionContext(self):
        dummy = DummyUtility()
        sm = zapi.getSiteManager()
        sm.registerUtility(IDummyUtility, dummy)

        # let's see if we can acquire something all the way from the
        # root (Application) object; we need to be careful to choose
        # something that's only available from the root object
        from Acquisition import aq_acquire
        dummy = zapi.getUtility(IDummyUtility)
        acquired = aq_acquire(dummy, 'ZopeAttributionButton', None)
        self.failUnless(acquired is not None)

        name, dummy = zapi.getUtilitiesFor(IDummyUtility).next()
        acquired = aq_acquire(dummy, 'ZopeAttributionButton', None)
        self.failUnless(acquired is not None)

        dummy = zapi.getAllUtilitiesRegisteredFor(IDummyUtility).next()
        acquired = aq_acquire(dummy, 'ZopeAttributionButton', None)
        self.failUnless(acquired is not None)        
    def test_utilitiesHaveProperAcquisitionContext(self):
        dummy = DummyUtility()
        sm = zapi.getSiteManager()
        sm.registerUtility(IDummyUtility, dummy)

        # let's see if we can acquire something all the way from the
        # root (Application) object; we need to be careful to choose
        # something that's only available from the root object
        from Acquisition import aq_acquire
        dummy = zapi.getUtility(IDummyUtility)
        acquired = aq_acquire(dummy, 'ZopeAttributionButton', None)
        self.failUnless(acquired is not None)

        name, dummy = zapi.getUtilitiesFor(IDummyUtility).next()
        acquired = aq_acquire(dummy, 'ZopeAttributionButton', None)
        self.failUnless(acquired is not None)

        dummy = zapi.getAllUtilitiesRegisteredFor(IDummyUtility).next()
        acquired = aq_acquire(dummy, 'ZopeAttributionButton', None)
        self.failUnless(acquired is not None)
Example #40
0
    def test_derivedInterfaceRegistration(self):
        # Utilities providing a derived interface should be listed
        # when you ask for an interface. So ask for IDummmyInterace, and
        # anything registered for IDummyInterface of ISuperDummyInterface
        # should come back.

        sm = zapi.getSiteManager()
        self.failUnless(IRegisterUtilitySimply.providedBy(sm))
        dummy = DummyUtility()
        superdummy = DummyUtility()
        directlyProvides(superdummy, ISuperDummyUtility)
        uts = list(sm.getUtilitiesFor(IDummyUtility))
        self.failUnlessEqual(uts, [])

        sm.registerUtility(ISuperDummyUtility, superdummy)
        
        # We should be able to access this utility both with 
        # IDummyUtility and ISuperDummyUtility interfaces:
        uts = list(sm.getUtilitiesFor(IDummyUtility))
        self.failUnless(uts[0][1].aq_base is superdummy)
        uts = list(sm.getUtilitiesFor(ISuperDummyUtility))
        self.failUnless(uts[0][1].aq_base is superdummy)
        
        # Also try that the standard zapi call works:
        ut = zapi.getUtility(IDummyUtility, context=self.folder.site)
        self.failUnless(ut.aq_base is superdummy)
        ut = zapi.getUtility(ISuperDummyUtility, context=self.folder.site)
        self.failUnless(ut.aq_base is superdummy)
    
        # If we register a second utility we should find both utilities
        # when looking for the base interface
        sm.registerUtility(IDummyUtility, dummy)

        uts = list(sm.getAllUtilitiesRegisteredFor(IDummyUtility))
        self.failUnless(dummy in uts)
        self.failUnless(superdummy in uts)

        # But we should find only one when looking for the derived interface
        uts = list(sm.getAllUtilitiesRegisteredFor(ISuperDummyUtility))
        self.failUnless(dummy not in uts)
        self.failUnless(superdummy in uts)
    def test_derivedInterfaceRegistration(self):
        # Utilities providing a derived interface should be listed
        # when you ask for an interface. So ask for IDummmyInterace, and
        # anything registered for IDummyInterface of ISuperDummyInterface
        # should come back.

        sm = zapi.getSiteManager()
        self.failUnless(IRegisterUtilitySimply.providedBy(sm))
        dummy = DummyUtility()
        superdummy = DummyUtility()
        directlyProvides(superdummy, ISuperDummyUtility)
        uts = list(sm.getUtilitiesFor(IDummyUtility))
        self.failUnlessEqual(uts, [])

        sm.registerUtility(ISuperDummyUtility, superdummy)

        # We should be able to access this utility both with
        # IDummyUtility and ISuperDummyUtility interfaces:
        uts = list(sm.getUtilitiesFor(IDummyUtility))
        self.failUnless(uts[0][1].aq_base is superdummy)
        uts = list(sm.getUtilitiesFor(ISuperDummyUtility))
        self.failUnless(uts[0][1].aq_base is superdummy)

        # Also try that the standard zapi call works:
        ut = zapi.getUtility(IDummyUtility, context=self.folder.site)
        self.failUnless(ut.aq_base is superdummy)
        ut = zapi.getUtility(ISuperDummyUtility, context=self.folder.site)
        self.failUnless(ut.aq_base is superdummy)

        # If we register a second utility we should find both utilities
        # when looking for the base interface
        sm.registerUtility(IDummyUtility, dummy)

        uts = list(sm.getAllUtilitiesRegisteredFor(IDummyUtility))
        self.failUnless(dummy in uts)
        self.failUnless(superdummy in uts)

        # But we should find only one when looking for the derived interface
        uts = list(sm.getAllUtilitiesRegisteredFor(ISuperDummyUtility))
        self.failUnless(dummy not in uts)
        self.failUnless(superdummy in uts)
Example #42
0
 def test_getUtilitiesNoUtilitiesFolder(self):
     sm = zapi.getSiteManager()
     
     self.failUnless(sm.queryUtility(IDummyUtility) is None)
     self.assertEquals(list(sm.getUtilitiesFor(IDummyUtility)), [])
     self.assertEquals(list(sm.getAllUtilitiesRegisteredFor(IDummyUtility)), [])
Example #43
0
def createUtils(root_folder, connection=None, dummy_db=None):
    sitem = zapi.getSiteManager(root_folder)
    site = zapi.getParent(sitem)
    isInSite = IIctSite.providedBy(site)
    madeLdapAdapter = ensureUtility(\
        root_folder,
        IManageableLDAPAdapter,
        'ManageableLDAPAdapter',
        ManageableLDAPAdapter,
        name='ManageableLDAPAdapter',
        copy_to_zlog=False)

    madeLdapPas = ensureUtility(\
        root_folder,
        IMyLDAPAuthentication,
        'MyLDAPAuthentication',
        MyLDAPAuthentication,
        name='MyLDAPAuthentication',
        copy_to_zlog=False)

    if isinstance(madeLdapPas, MyLDAPAuthentication):
        madeLdapPas.adapterName = 'ManageableLDAPAdapter'
        madeLdapPas.principalIdPrefix = u'ldap.'

    madePluggableAuthentication = ensureUtility(\
        root_folder,
        IAdmUtilUserManagement,
        'AdmUtilUserManagement',
        AdmUtilUserManagement,
        name='',
        copy_to_zlog=False)

    if isinstance(madePluggableAuthentication, PluggableAuthentication):
        logger.info(u"bootstrap: Ensure named AdmUtilUserManagement")
        dcore = IWriteZopeDublinCore(madePluggableAuthentication)
        dcore.title = u"User Authentication"
        dcore.created = datetime.utcnow()
        madePluggableAuthentication.ikName = dcore.title
        # madePluggableAuthentication.__post_init__()
        sitem = root_folder.getSiteManager()
        utils = [
            util for util in sitem.registeredUtilities()
            if util.provided.isOrExtends(IAdmUtilSupervisor)
        ]
        instAdmUtilSupervisor = utils[0].component
        instAdmUtilSupervisor.appendEventHistory(\
            u" bootstrap: made AdmUtilUserManagement-Utility")
        if not isInSite:
            # only produce in real zope root folder not sites
            groups = GroupFolder(u'group.')
            madePluggableAuthentication[u'groups'] = groups
            principals = PrincipalFolder(u'principal.')
            madePluggableAuthentication[u'principals'] = principals
            madePluggableAuthentication.credentialsPlugins = \
                                       (u'Session Credentials',
                                        u'No Challenge if Authenticated',)
            p_user = InternalPrincipal(u'User',
                                       u'User',
                                       u'Initial User',
                                       passwordManagerName="SHA1")
            p_manager = InternalPrincipal(u'Manager',
                                          u'Manager',
                                          u'Initial Manager',
                                          passwordManagerName="SHA1")
            p_admin = InternalPrincipal(u'Administrator',
                                        u'Administrator',
                                        u'Initial Administrator',
                                        passwordManagerName="SHA1")
            p_developer = InternalPrincipal(u'Developer',
                                            u'Developer',
                                            u'Initial Developer',
                                            passwordManagerName="SHA1")
            principals[u'User'] = p_user
            principals[u'Manager'] = p_manager
            principals[u'Administrator'] = p_admin
            principals[u'Developer'] = p_developer
            grp_usr = GroupInformation(
                u'User', u'view & analyse data, generate reports '
                u'& leave notes at any object')
            grp_mgr = GroupInformation(
                u'Manager', u'search, connect, configure '
                u'& delete devices')
            grp_adm = GroupInformation(
                u'Administrator', u'install, configure '
                u'& administrate System')
            grp_dvl = GroupInformation(
                u'Developer', u'individual adaption '
                u'& development on System')
            grp_usr.principals = [u'principal.User']
            grp_mgr.principals = [u'principal.Manager']
            grp_adm.principals = [u'principal.Administrator']
            grp_dvl.principals = [u'principal.Developer']
            groups[u'User'] = grp_usr
            groups[u'Manager'] = grp_mgr
            groups[u'Administrator'] = grp_adm
            groups[u'Developer'] = grp_dvl
            madePluggableAuthentication[u'LDAPAuthentication'] = madeLdapPas
            madePluggableAuthentication.authenticatorPlugins = \
                (u'groups', u'principals', u'LDAPAuthentication', )
            prm = IPrincipalRoleManager(root_folder)
            prm.assignRoleToPrincipal(u'org.ict_ok.usr', u'group.User')
            prm.assignRoleToPrincipal(u'org.ict_ok.mgr', u'group.Manager')
            prm.assignRoleToPrincipal(u'org.ict_ok.adm',
                                      u'group.Administrator')
            prm.assignRoleToPrincipal(u'org.ict_ok.dvl', u'group.Developer')
        else:  # is in site
            madePluggableAuthentication.credentialsPlugins = \
                                       (u'Session Credentials',
                                        u'No Challenge if Authenticated',)
            madePluggableAuthentication[u'LDAPAuthentication'] = madeLdapPas
            madePluggableAuthentication.authenticatorPlugins = \
                (u'LDAPAuthentication', )

    transaction.get().commit()
    if connection is not None:
        connection.close()
Example #44
0
 def getRegistry(self):
     return zapi.getSiteManager(self)
Example #45
0
 def __init__(self, container):
     self.__parent__ = container
     self.sitemanager = zapi.getSiteManager(container)