当前位置: 首页>>代码示例>>Python>>正文


Python component.getAdapters函数代码示例

本文整理汇总了Python中zope.component.getAdapters函数的典型用法代码示例。如果您正苦于以下问题:Python getAdapters函数的具体用法?Python getAdapters怎么用?Python getAdapters使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。


在下文中一共展示了getAdapters函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。

示例1: filter

 def filter(self, components, manager=None):
     """ Returns a filtered list of components
     """
     order = []
     # temporary provide all interfaces of the registered components
     notprovided = []
     for name, comp in components:
         if not comp.interface.providedBy(self.context):
             notprovided.append(comp.interface)
             interface.alsoProvides(self.context, comp.interface)
     view = component.getMultiAdapter((self.context, self.request), name=u'view')
     if manager is not None:
         manager = component.getMultiAdapter((self.context, self.request, view), VIEWLET_MANAGER_MAP.get(manager, object()), name=manager)
         viewlets = component.getAdapters((self.context, self.request, view, manager), IViewlet)
         viewlets = manager.filter(viewlets)
         viewlets = manager.sort(viewlets)
         for name, viewlet in viewlets:
             order.append(name)
     else:
         for name, iface in ORDERED_VIEWLET_MANAGERS:
             manager = component.getMultiAdapter((self.context, self.request, view), iface, name=name)
             viewlets = component.getAdapters((self.context, self.request, view, manager), IViewlet)
             viewlets = manager.filter(viewlets)
             viewlets = manager.sort(viewlets)
             for name, viewlet in viewlets:
                 order.append(name)
     # no longer provide the interfaces previously set
     for iface in notprovided:
         interface.noLongerProvides(self.context, iface)
     components = [(name, comp) for name, comp in components if comp.viewlet in order]
     components.sort(lambda x, y: cmp(order.index(x[1].viewlet), order.index(y[1].viewlet)))
     return components
开发者ID:Raptus,项目名称:raptus.article.core,代码行数:32,代码来源:componentfilter.py

示例2: test_membership_adapter_registration

    def test_membership_adapter_registration(self):

        class Source(TestAdapter):

            def memberships(self, person=None):
                pass

        with self.custom_source(Source):

            folder = self.new_temporary_folder()

            adapters = [
                name for name, source in
                getAdapters((folder, ), IMembershipSource)
            ]

            self.assertEqual(
                adapters, ['zodb-membership-source', 'custom-source']
            )

        adapters = [
            name for name, source in
            getAdapters((folder, ), IMembershipSource)
        ]
        self.assertEqual(adapters, ['zodb-membership-source'])
开发者ID:seantis,项目名称:seantis.people,代码行数:25,代码来源:test_memberships.py

示例3: __init__

    def __init__(self, context):
        perms = []
        # first get object permissionsmap
        supp = IObjectPermissionsMaps(context, None)
        if supp is not None:
            perms.extend(supp.get())

        for name, permissions in getAdapters((context,), IPermissionsMap):
        # then get adapted permissionsmap
            perms.append(permissions)

        self.perms = perms

        # collect parents permissionsmaps
        parent_perms = []
        if hasattr(context, '__parent__'):
            parent_context = context.__parent__
        else:
            parent_context = None
        while ILocation.providedBy(parent_context) and parent_context is not None:
            for name, permissions in getAdapters((parent_context,), IPermissionsMap):
                if permissions not in parent_perms:
                    parent_perms.append(permissions)
            parent_context = parent_context.__parent__

        self.parent_perms = parent_perms #tuple(reversed(parent_perms)) # Permissions are propagated in 'child -> parent' direction
开发者ID:Zojax,项目名称:zojax.permissionsmap,代码行数:26,代码来源:manager.py

示例4: instanceSchemaFactory

def instanceSchemaFactory(context):
    """Default schema adapter factory.

    In BaseObject, the Schema() method will do 'schema = ISchema(self)'. This
    adapter factory is a replacement of the default one in
    Archetypes.Schema.factory. It allows you to register named adapter
    to extend the schema. The advantage is that now several packages can do
    additions to the schema without conflicts.
    """
    extenders = list(getAdapters((context, ), ISchemaExtender))
    modifiers = list(getAdapters((context, ), ISchemaModifier))
    if len(extenders) == 0 and len(modifiers) == 0:
        return context.schema

    # as long as the schema is only extended, we can reuse all fields
    # if it's modified later, then we need a full copy, see modifiers below
    # however, using the __add__ function will needlessly validate all fields
    # again (in `addField`).  instead we first create an empty schema of the
    # same class, which is then populated using (shallow) copies of the
    # internal data structures.  this shouldn't be too risky considering
    # that they've last changed about 6 years ago...
    schema = context.schema.__class__()
    schema._names = list(context.schema._names)
    schema._fields = context.schema._fields.copy()
    schema._props = context.schema._props.copy()
    schema._layers = context.schema._layers.copy()

    # loop through all schema extenders
    order = None
    for name, extender in extenders:
        if IBrowserLayerAwareExtender.providedBy(extender) and \
           (not has_plone_browserlayer or \
           extender.layer not in registered_layers()):
            continue
        for field in extender.getFields():
            schema.addField(field)
            if order is not None:
                if not field.schemata in order.keys():
                    order[field.schemata] = list()
                order[field.schemata].append(field.getName())
        if IOrderableSchemaExtender.providedBy(extender):
            if order is None:
                # we need to get the current order first
                order = get_schema_order(schema)
            order = extender.getOrder(order)
            if DevelopmentMode:
                validate_schema_order(schema, order)
    if order is not None:
        set_schema_order(schema, order)

    if len(modifiers) > 0:
        for name, modifier in modifiers:
            if IBrowserLayerAwareExtender.providedBy(modifier) and \
               (not has_plone_browserlayer or \
               modifier.layer not in registered_layers()):
                continue
            modifier.fiddle(schema)

    return schema
开发者ID:Vinsurya,项目名称:Plone,代码行数:59,代码来源:extender.py

示例5: extenders

    def extenders(self):

        extenders = [x for x in getAdapters((self.base_context, ), ISchemaExtender)]
        modifiers = [x for x in getAdapters((self.base_context, ), ISchemaModifier)]

        extenders.extend(modifiers)

        return extenders
开发者ID:tsimkins,项目名称:agCommon,代码行数:8,代码来源:__init__.py

示例6: vocab

def vocab(context):
    request = context.REQUEST
    view = getMultiAdapter((context, context.REQUEST), Interface, 'plone')
    values = []
    for manager_name, manager in getAdapters((context, request, view), IViewletManager):
        if manager_name not in MANAGER_BLACKLIST:
            for viewlet_name, viewlet in getAdapters((context, request, view, manager), IViewlet):
                if viewlet_name not in VIEWLET_BLACKLIST:
                    values.append(' '.join((manager_name, viewlet_name)))
    return SimpleVocabulary.fromValues(values)
开发者ID:danjacka,项目名称:plone.portlet.viewlet,代码行数:10,代码来源:portlet.py

示例7: vocab

def vocab(context):
    request = context.REQUEST
    view = BrowserView(context, request)
    alsoProvides(view, IViewView)
    values = []
    for manager_name, manager in getAdapters((context, request, view), IViewletManager):
        if manager_name not in MANAGER_BLACKLIST:
            for viewlet_name, viewlet in getAdapters((context, request, view, manager), IViewlet):
                if viewlet_name not in VIEWLET_BLACKLIST:
                    values.append(' '.join((manager_name, viewlet_name)))
    return SimpleVocabulary.fromValues(values)
开发者ID:collective,项目名称:plone.portlet.viewlet,代码行数:11,代码来源:portlet.py

示例8: addRefreshViewletCommands

def addRefreshViewletCommands(event):
    view = event.view
    context = view.context
    request = view.request
    annotations = IAnnotations(request)
    viewletByClass = annotations.get('viewletByClass', [])
    if viewletByClass:
        for name, manager in getAdapters(
                (context, request, view, ), IViewletManager):
            for name, viewlet in  getAdapters(
                (context, request, view, manager), IViewlet):
                maybeRenderViewlet(viewlet, viewletByClass)
开发者ID:alecghica,项目名称:plone.app.kss,代码行数:12,代码来源:zopecommands.py

示例9: SetDefaults

def SetDefaults(object, event):
    """ Sets the default components defined by the registered adapters providing IDefaultComponents
    """
    for name, provider in component.getAdapters((object,),
                                                interfaces.IDefaultComponents):
        for comp in provider.getComponents():
            interface.alsoProvides(object, comp.interface)
    for name, provider in component.getAdapters((object,),
                                                interfaces.INamedDefaultComponent):
        comp = component.queryAdapter(object,
                                      interface=interfaces.IComponent,
                                      name=name)
        if comp is not None:
            interface.alsoProvides(object, comp.interface)
    object.reindexObject(idxs=['object_provides'])
开发者ID:Raptus,项目名称:raptus.article.core,代码行数:15,代码来源:componentsdefault.py

示例10: containers

 def containers(self):
     """Get a list of potential containers
     """
     context = aq_inner(self.context)
     for name, locator in getAdapters((context,), IWCContainerLocator):
         if locator.available:
             yield dict(name=name, locator=locator)
开发者ID:gotcha,项目名称:plone.app.iterate,代码行数:7,代码来源:checkout.py

示例11: _process_devices

 def _process_devices(self):
     stats = {'Device Count': 0,
              'Decommissioned Devices': 0,
              'CPU Cores':0}
     LINKED_DEVICES = "Linked Devices"
     if LINKED_DEVICES not in stats:
         stats[LINKED_DEVICES] = 0
     for device in self._dmd.Devices.getSubDevicesGen_recursive():
         stats['Device Count'] += 1
         if device.productionState < 0:
             stats["Decommissioned Devices"] += 1
         cpuCount = IDeviceCpuCount(device).cpuCount()
         log.debug("Devices %s has %s cpu cores", device, cpuCount)
         stats['CPU Cores'] += cpuCount
         for adapter in subscribers([device], IDeviceResource):
             adapter.processDevice(stats)
         found_linked = False
         for name, adapter in getAdapters((device,), IDeviceLink):
             if adapter.linkedDevice():
                 key = "%s - %s" % (LINKED_DEVICES, name)
                 if key not in stats:
                     stats[key] = 0
                 stats[key] += 1
                 if not found_linked:
                     stats[LINKED_DEVICES] += 1
                     found_linked = True
                 
             
     return stats
开发者ID:SteelHouseLabs,项目名称:zenoss-prodbin,代码行数:29,代码来源:ZenossAppData.py

示例12: update

    def update(self):
        """See zope.contentprovider.interfaces.IContentProvider"""
        
        OTHER_MANAGER_KEYS = ["form.buttons.scale_button", "form.buttons.slots_button",
                              "form.buttons.lead_button","form.buttons.text_button_questions",
                              "form.buttons.text_button_answers","form.buttons.quiz_pages"]
        for key in OTHER_MANAGER_KEYS:
            no_need_update = self.request.get(key, default=False)
            if no_need_update:
                self.viewlets = []
                return
            
        
        self.__updated = True
        # Find all content providers for the region
        viewlets = getAdapters(
            (self.context, self.request, self.__parent__, self),IViewlet)

        viewlets = self.filter(viewlets)
        viewlets = self.sort(viewlets)

        # Just use the viewlets from now on
        self.viewlets = [viewlet for name, viewlet in viewlets]
        self.names = [name for name,viewlet in viewlets]
        # Update all viewlets and Handle Delete action
        for viewlet in self.viewlets:
            viewlet.update()
            if self.context.__name__ is None:
                #handle case when the first lead viewlet must be updated
                if IQuestionsForConstructor.providedBy(self.__parent__):
                    if ILeadedLayer.providedBy(self.request):
                        self.__parent__.question_was_removed = True
                self.viewlets = []
                break
开发者ID:HengeSense,项目名称:Qreature,代码行数:34,代码来源:manager.py

示例13: testUpgradeTinyMCE

    def testUpgradeTinyMCE(self):
        alphas.upgradeTinyMCE(self.portal.portal_setup)
        jstool = getToolByName(self.portal, 'portal_javascripts')
        jsresourceids = jstool.getResourceIds()

        self.assertIn('jquery.tinymce.js', jsresourceids)
        for ne in ['tiny_mce.js', 'tiny_mce_init.js']:
            self.assertNotIn(ne, jsresourceids, ne)

        ksstool = getToolByName(self.portal, 'portal_kss', None)
        if ksstool is not None:
            kssresourceids = ksstool.getResourceIds()
            self.assertNotIn('++resource++tinymce.kss/tinymce.kss',
                             kssresourceids)

        request = self.app.REQUEST
        plone_view = queryMultiAdapter((self.portal, request), name="plone")
        manager = queryMultiAdapter(
                    (self.portal, request, plone_view), IContentProvider, 'plone.htmlhead')
        viewlets = getAdapters(
                (manager.context, manager.request, manager.__parent__, manager), IViewlet)
        self.assertIn(u'tinymce.configuration', dict(viewlets))
        storage = getUtility(IViewletSettingsStorage)
        skinname = self.portal.getCurrentSkinName()
        order_by_name = storage.getOrder('plone.htmlhead', skinname)
        self.assertEqual(order_by_name[-1], u'tinymce.configuration')
开发者ID:lentinj,项目名称:plone.app.upgrade,代码行数:26,代码来源:tests.py

示例14: renameAfterCreation

def renameAfterCreation(obj):
    """Rename the content after it was created/added
    """
    # Check if the _bika_id was already set
    bika_id = getattr(obj, "_bika_id", None)
    if bika_id is not None:
        return bika_id
    # Can't rename without a subtransaction commit when using portal_factory
    transaction.savepoint(optimistic=True)
    # The id returned should be normalized already
    new_id = None
    # Checking if an adapter exists for this content type. If yes, we will
    # get new_id from adapter.
    for name, adapter in getAdapters((obj, ), IIdServer):
        if new_id:
            logger.warn(('More than one ID Generator Adapter found for'
                         'content type -> %s') % obj.portal_type)
        new_id = adapter.generate_id(obj.portal_type)
    if not new_id:
        new_id = generateUniqueId(obj)

    # TODO: This is a naive check just in current folder
    # -> this should check globally for duplicate objects with same prefix
    # N.B. a check like `search_by_prefix` each time would probably slow things
    # down too much!
    # -> A solution could be to store all IDs with a certain prefix in a storage
    parent = api.get_parent(obj)
    if new_id in parent.objectIds():
        # XXX We could do the check in a `while` loop and generate a new one.
        raise KeyError("The ID {} is already taken in the path {}".format(
            new_id, api.get_path(parent)))
    # rename the object to the new id
    parent.manage_renameObject(obj.id, new_id)

    return new_id
开发者ID:xispa,项目名称:bika.lims,代码行数:35,代码来源:idserver.py

示例15: addition_init_code

 def addition_init_code(self):
     code = u""
     providers = component.getAdapters(self, IFacebookInitCodeProvider)
     for provider in providers:
         if provider.available():
             code += provider.get_code()
     return code
开发者ID:toutpt,项目名称:collective.js.facebook,代码行数:7,代码来源:init.py


注:本文中的zope.component.getAdapters函数示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。