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


Python interface.directlyProvidedBy函数代码示例

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


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

示例1: test_show_on_home_factory_does_not_remove_other_interfaces

    def test_show_on_home_factory_does_not_remove_other_interfaces(self):
        applyProfile(self.portal, 'ftw.news:show-on-homepage')

        page = create(Builder('sl content page'))
        newsfolder = create(Builder('news folder').within(page))
        news = create(Builder('news')
                      .within(newsfolder)
                      .having(news_date=datetime(2011, 1, 2, 15, 0, 0)))

        class IDummyMarkerInterface(Interface):
            pass

        directlyProvides(news, IDummyMarkerInterface)
        self.assertEqual(
            [IDummyMarkerInterface],
            list(directlyProvidedBy(news))
        )

        IShowOnHomepageSchema(news).show_on_homepage = True
        self.assertEqual(
            [IDummyMarkerInterface, IShowOnHomepage],
            list(directlyProvidedBy(news))
        )

        IShowOnHomepageSchema(news).show_on_homepage = False
        self.assertEqual(
            [IDummyMarkerInterface],
            list(directlyProvidedBy(news))
        )
开发者ID:4teamwork,项目名称:ftw.news,代码行数:29,代码来源:test_news_on_homepage_behavior.py

示例2: test_directlyProvides

    def test_directlyProvides(self):
        class IA1(Interface): pass
        class IA2(Interface): pass
        class IB(Interface): pass
        class IC(Interface): pass
        class A(Odd):
            pass
        classImplements(A, IA1, IA2)

        class B(Odd):
            pass
        classImplements(B, IB)

        class C(A, B):
            pass
        classImplements(C, IC)


        ob = C()
        directlyProvides(ob, I1, I2)
        self.assertTrue(I1 in providedBy(ob))
        self.assertTrue(I2 in providedBy(ob))
        self.assertTrue(IA1 in providedBy(ob))
        self.assertTrue(IA2 in providedBy(ob))
        self.assertTrue(IB in providedBy(ob))
        self.assertTrue(IC in providedBy(ob))

        directlyProvides(ob, directlyProvidedBy(ob)-I2)
        self.assertTrue(I1 in providedBy(ob))
        self.assertFalse(I2 in providedBy(ob))
        self.assertFalse(I2 in providedBy(ob))
        directlyProvides(ob, directlyProvidedBy(ob), I2)
        self.assertTrue(I2 in providedBy(ob))
开发者ID:Architektor,项目名称:PySnip,代码行数:33,代码来源:test_odd_declarations.py

示例3: test_directlyProvides

    def test_directlyProvides(self):
        class IA1(Interface): pass
        class IA2(Interface): pass
        class IB(Interface): pass
        class IC(Interface): pass
        class A(Odd):
            implements(IA1, IA2)

        class B(Odd):
            implements(IB)

        class C(A, B):
            implements(IC)


        ob = C()
        directlyProvides(ob, I1, I2)
        self.assert_(I1 in providedBy(ob))
        self.assert_(I2 in providedBy(ob))
        self.assert_(IA1 in providedBy(ob))
        self.assert_(IA2 in providedBy(ob))
        self.assert_(IB in providedBy(ob))
        self.assert_(IC in providedBy(ob))

        directlyProvides(ob, directlyProvidedBy(ob)-I2)
        self.assert_(I1 in providedBy(ob))
        self.failIf(I2 in providedBy(ob))
        self.failIf(I2 in providedBy(ob))
        directlyProvides(ob, directlyProvidedBy(ob), I2)
        self.assert_(I2 in providedBy(ob))
开发者ID:ConduitTeam,项目名称:hue,代码行数:30,代码来源:test_odd_declarations.py

示例4: _gpgAuthenticateEmail

def _gpgAuthenticateEmail(mail, principal, person,
                          signature_timestamp_checker):
    """Check GPG signature.

    :param principal: Claimed sender of the mail; to be checked against
        the actual signature.
    :returns: principal, either strongly or weakly authenticated.
    """
    log = logging.getLogger('process-mail')
    signature = mail.signature
    email_addr = parseaddr(mail['From'])[1]
    if signature is None:
        # Mark the principal so that application code can check that the
        # user was weakly authenticated.
        log.debug('message has no signature; therefore weakly authenticated')
        directlyProvides(
            principal, directlyProvidedBy(principal),
            IWeaklyAuthenticatedPrincipal)
        setupInteraction(principal, email_addr)
        return principal

    gpghandler = getUtility(IGPGHandler)
    try:
        sig = gpghandler.getVerifiedSignature(
            canonicalise_line_endings(mail.signedContent), signature)
        log.debug("got signature %r" % sig)
    except GPGVerificationError as e:
        # verifySignature failed to verify the signature.
        message = "Signature couldn't be verified: %s" % e
        log.debug(message)
        raise InvalidSignature(message)

    if signature_timestamp_checker is None:
        signature_timestamp_checker = ensure_sane_signature_timestamp
    # If this fails, we return an error to the user rather than just treating
    # it as untrusted, so they can debug or understand the problem.
    signature_timestamp_checker(
        sig.timestamp,
        'incoming mail verification')

    for gpgkey in person.gpg_keys:
        if gpgkey.fingerprint == sig.fingerprint:
            log.debug('gpg-signed message by key %r' % gpgkey.fingerprint)
            break
    else:
        # The key doesn't belong to the user. Mark the principal so that the
        # application code knows that the key used to sign the email isn't
        # associated with the authenticated user.
        log.debug('gpg-signed message but by no known key of principal')
        directlyProvides(
            principal, directlyProvidedBy(principal),
            IWeaklyAuthenticatedPrincipal)

    setupInteraction(principal, email_addr)
    return principal
开发者ID:pombreda,项目名称:UnnaturalCodeFork,代码行数:55,代码来源:incoming.py

示例5: test_context_manager_adds_book_layers

    def test_context_manager_adds_book_layers(self):
        thelist = list(directlyProvidedBy(self.portal.REQUEST))

        with providing_book_layers(self.portal, self.portal.REQUEST):
            diff = [it for it in list(
                    directlyProvidedBy(self.portal.REQUEST)) if it not in thelist]

            self.assertEquals(
                ['<InterfaceClass ftw.book.interfaces.IWithinBookLayer>'],
                [str(item) for item in diff])

        self.assertEquals(thelist,
                          list(directlyProvidedBy(self.portal.REQUEST)))
开发者ID:4teamwork,项目名称:ftw.book,代码行数:13,代码来源:test_context_manager.py

示例6: afterSetUp

    def afterSetUp(self):

        # A hack to force gomobile.convergence install when running multiple tests on P3
        name = "gomobile.convergence"
        qi = self.portal.portal_quickinstaller
        
        try:
            qi.uninstallProducts([name])
        except:
            pass
        qi.installProduct(name)        
        
        self.filter = getUtility(IConvergenceMediaFilter)

        # Set up convergence layer on HTTP request,
        # so that configure overrides kick in


        from plone.browserlayer import utils

        # TODO: Put following into a test case
        self.assertTrue(IConvergenceBrowserLayer in utils.registered_layers())

        # Make sure that convergence layer is applied on the test request,
        # so that our custom views kick in
        #import pdb ; pdb.set_trace()
        directlyProvides(self.portal.REQUEST, [IConvergenceBrowserLayer] + list(directlyProvidedBy(self.portal.REQUEST)))
开发者ID:plone-gomobile,项目名称:gomobile.convergence,代码行数:27,代码来源:base.py

示例7: mark_layer

def mark_layer(site, event):
    """Mark the request with a layer corresponding to the current skin,
    as set in the portal_skins tool.
    """
    if getattr(event.request, "_plonetheme_", False):
        return
    event.request._plonetheme_=True

    portal_skins = getToolByName(site, 'portal_skins', None)
    if portal_skins is not None:
        skin_name = site.getCurrentSkinName()
        skin = queryUtility(IBrowserSkinType, name=skin_name)
        if skin is not None:
            layer_ifaces = []
            default_ifaces = []
            # We need to make sure IDefaultPloneLayer comes after
            # any other layers, even if they don't explicitly extend it.
            if IDefaultPloneLayer in skin.__iro__:
                default_ifaces += [IDefaultPloneLayer]
            for layer in directlyProvidedBy(event.request):
                if layer in default_layers:
                    default_ifaces.append(layer)
                elif IBrowserSkinType.providedBy(layer):
                    continue
                else:
                    layer_ifaces.append(layer)
            ifaces = [skin, ] + layer_ifaces + default_ifaces
            directlyProvides(event.request, *ifaces)
开发者ID:urska19,项目名称:Plone-test,代码行数:28,代码来源:layer.py

示例8: objs_with_iface

def objs_with_iface(context, iface):
    """Return all objects in the system as found by the nearest portal
    catalog that provides the given interface.  The result will be a generator
    for scalability reasons.

      >>> from zope import interface
      >>> class ITest(interface.Interface): pass
      >>> class Mock(object):
      ...     def __init__(self, id): self.id = id
      ...     def getObject(self): return self
      ...     def __repr__(self): return '<Mock id=%s>' % self.id
      >>> m = Mock('Portal Root')
      >>> objs = [Mock('m1'), Mock('m2'), Mock('m3')]
      >>> interface.directlyProvides(objs[1], ITest)
      >>> m.portal_catalog = lambda **kwargs: objs

      >>> [x for x in objs_with_iface(m, ITest)]
      [<Mock id=m2>]

    """

    catalog = cmfutils.getToolByName(context, 'portal_catalog')

    for brain in catalog(object_provides=interfaceToName(context, iface)):
        obj = brain.getObject()
        if iface in interface.directlyProvidedBy(obj):
            yield brain.getObject()
开发者ID:Cenditel,项目名称:cenditel.comunidades.cynin,代码行数:27,代码来源:utils.py

示例9: remove_marker_ifaces

def remove_marker_ifaces(context, ifaces): 
    """Remove the given interfaces from all objects using a catalog
    query.  context needs to either be the portal or be properly aq wrapped
    to allow for cmf catalog tool lookup.  ifaces can be either a single
    interface or a sequence of interfaces.

      >>> from zope import interface
      >>> class ITest(interface.Interface): pass
      >>> class Mock(object):
      ...     def __init__(self, id): self.id = id
      ...     def getObject(self): return self
      ...     def __repr__(self): return '<Mock id=%s>' % self.id
      >>> m = Mock('Portal Root')
      >>> objs = [Mock('m1'), Mock('m2'), Mock('m3')]
      >>> interface.directlyProvides(objs[1], ITest)
      >>> m.portal_catalog = lambda **kwargs: objs

      >>> remove_marker_ifaces(m, ITest)
      1

      >>> remove_marker_ifaces(m, [ITest])
      0

    """

    if not isinstance(ifaces, (tuple, list)):
        ifaces = [ifaces]

    count = 0
    for iface in ifaces:
        for obj in objs_with_iface(context, iface):
            count += 1
            provided = interface.directlyProvidedBy(obj)
            interface.directlyProvides(obj, provided - iface)
    return count
开发者ID:Cenditel,项目名称:cenditel.comunidades.cynin,代码行数:35,代码来源:utils.py

示例10: set_newsletter_state

 def set_newsletter_state(self, state):
     if IPossibleNewsletter.providedBy(self.context):
         ifaces = interface.directlyProvidedBy(self.context)
         if state and not INewsletterEnhanced.providedBy(self.context):
             interface.alsoProvides(self.context, INewsletterEnhanced)
         elif not state and INewsletterEnhanced in ifaces:
             interface.directlyProvides(self.context, ifaces - INewsletterEnhanced)
开发者ID:collective,项目名称:collective.newsletter,代码行数:7,代码来源:support.py

示例11: _set_activation

def _set_activation(obj, possibleiface, enhancediface, activation):
    """Try to set the feature activation on the given object.
    """

    if isinstance(possibleiface, basestring):
        raise NotImplementedError('Still need to locaate class via dotted '
                                  'path string')
    if isinstance(enhancediface, basestring):
        raise NotImplementedError('Still need to locaate class via '
                                  'dotted path string')

    if not possibleiface.providedBy(obj):
        raise ActivationException('The object denoted by %r does not '
                                  'provide the %r interface'
                                  % (repr(obj), repr(possibleiface)))

    if not activation and enhancediface.implementedBy(obj.__class__):
        raise ActivationException('It is not possible to remove %r from '
                                  'the %r since the class is the '
                                  'implementer'
                                  % (repr(possibleiface), repr(obj)))

    ifaces = interface.directlyProvidedBy(obj)
    if activation and not enhancediface.providedBy(obj):
        interface.alsoProvides(obj, enhancediface)
        event.notify(interfaces.FeatureActivatedEvent(enhancediface, obj))
    elif not activation and enhancediface in ifaces:
        interface.directlyProvides(obj, ifaces - enhancediface)
        event.notify(interfaces.FeatureDeactivatedEvent(enhancediface, obj))
开发者ID:collective,项目名称:p4a.common,代码行数:29,代码来源:feature.py

示例12: configureXMLWidgets

def configureXMLWidgets(root):
    """Configure XMLWidgets registries, editor, etc'
    """
    # create the core widgets from the filesystem
    add_fss_directory_view(root, 'service_widgets', __file__, 'widgets')

    # create the editor service
    root.manage_addProduct['XMLWidgets'].manage_addEditorService(
        'service_editor')
    # create the services for XMLWidgets
    for name in ['service_doc_editor', 'service_doc_previewer',
                 'service_doc_viewer',
                 'service_field_editor', 'service_field_viewer',
                 'service_nlist_editor', 'service_nlist_previewer',
                 'service_nlist_viewer',
                 'service_sub_editor', 'service_sub_previewer',
                 'service_sub_viewer',
                 'service_table_editor', 'service_table_viewer']:
        root.manage_addProduct['XMLWidgets'].manage_addWidgetRegistry(name)
        if IInvisibleService is not None:
            interface.directlyProvides(
                root[name],
                IInvisibleService,
                *interface.directlyProvidedBy(root[name]))

    # now register all widgets
    # XXX not really necessary; the "install" should take case of this
    registerCoreWidgets(root)
开发者ID:benjiebeetle,项目名称:SilvaUCLExampleContentTypes,代码行数:28,代码来源:install.py

示例13: enabled

 def enabled(self, value):
     context = removeAllProxies(self.context)
     if value:
         interface.alsoProvides(context, self.marker)
     else:
         if self.marker in interface.directlyProvidedBy(context):
             interface.noLongerProvides(context, self.marker)
开发者ID:Zojax,项目名称:zojax.payable.core,代码行数:7,代码来源:extension.py

示例14: copyRelationsOnSourceCopy

def copyRelationsOnSourceCopy(obj, event):
    """Copies all source relaitonships marked with IRetainOnCopy
    when the source object is copied"""
    orig_obj = obj.__orig_object__.aq_inner
    source = IRelationshipSource(orig_obj)
    cur_ifaces = directlyProvidedBy(obj)
    directlyProvides(obj, *[i for i in cur_ifaces if i is not ICopyPendingAdd])
    delattr(obj, '__orig_object__')
    copy_filter = IRetainOnCopy.providedBy
    # this is not efficient to source objects with a huge number of
    # relations
    rels = source.getRelationships(rel_filter=copy_filter)
    container = getUtility(IComplexRelationshipContainer, name='relations')
    unwrapped_obj = aq_base(obj)
    for rel in rels:
        # copy the relationship
        rel_copy = locationCopy(aq_base(rel))
        # The references on the copy becames copies themselves we need
        # to make sure all such references point to the originals:
        rel_copy.__dict__ = rel.__dict__
        # We should also remove existing ILocation pointers
        rel_copy.__parent__ = rel_copy.__name__ = None
        # Now we add the relationship (with wrong sources for now) to
        # give it a context.
        container.add(rel_copy)
        # replace the old sources with just the copy
        rel_copy.sources = (obj,)
开发者ID:plone,项目名称:plone.app.relations,代码行数:27,代码来源:subscribers.py

示例15: providing_book_layers

def providing_book_layers(book, request):
    original_interfaces = list(directlyProvidedBy(request))
    provide_book_layers(book, request)
    try:
        yield
    finally:
        directlyProvides(request, *original_interfaces)
开发者ID:4teamwork,项目名称:ftw.book,代码行数:7,代码来源:layer.py


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