def test_call_require(self):
        resource = I18nResource(self.context, 'Name', permission='zope.Public')
        resource.translation(self.context, 'en', file=__file__)
        resource(require={'foo': 'bar'})
        self.assertEqual(1, len(self.context.actions))

        factory = self.context.actions[0]['args'][1]
        factory(TestRequest())
def icon(_context, name, for_, file=None, resource=None,
         layer=IDefaultBrowserLayer, title=None,
         width=16, height=16):

    iname = for_.getName()

    if title is None:
        title = iname
        if title.startswith('I'):
            title = title[1:] # Remove leading 'I'

    if file is not None and resource is not None:
        raise ConfigurationError(
            "Can't use more than one of file, and resource "
            "attributes for icon directives"
            )
    elif file is not None:
        resource = '-'.join(for_.__module__.split('.'))
        resource = "%s-%s-%s" % (resource, iname, name)
        ext = os.path.splitext(file)[1]
        if ext:
            resource += ext

        # give this module another name, so we can use the "resource" directive
        # in it that won't conflict with our local variable with the same name.
        from zope.browserresource import metaconfigure
        metaconfigure.resource(_context, file=file, name=resource, layer=layer)
    elif resource is None:
        raise ConfigurationError(
            "At least one of the file, and resource "
            "attributes for resource directives must be specified"
            )

    vfactory = IconViewFactory(resource, title, width, height)

    _context.action(
        discriminator=('view', name, vfactory, layer),
        callable=handler,
        args=('registerAdapter',
              vfactory, (for_, layer), Interface, name, _context.info)
    )

    _context.action(
        discriminator=None,
        callable=provideInterface,
        args=(for_.__module__+'.'+for_.getName(),
              for_)
    )
示例#3
0
def icon(_context, name, for_, file=None, resource=None,
                  layer=IDefaultBrowserLayer, title=None,
                  width=16, height=16):

    iname = for_.getName()

    if title is None:
        title = iname
        if title.startswith('I'):
            title = title[1:] # Remove leading 'I'

    if file is not None and resource is not None:
        raise ConfigurationError(
            "Can't use more than one of file, and resource "
            "attributes for icon directives"
            )
    elif file is not None:
        resource = '-'.join(for_.__module__.split('.'))
        resource = "%s-%s-%s" % (resource, iname, name)
        ext = os.path.splitext(file)[1]
        if ext:
            resource += ext

        # give this module another name, so we can use the "resource" directive
        # in it that won't conflict with our local variable with the same name.
        from zope.browserresource import metaconfigure
        metaconfigure.resource(_context, file=file, name=resource, layer=layer)
    elif resource is None:
        raise ConfigurationError(
            "At least one of the file, and resource "
            "attributes for resource directives must be specified"
            )

    vfactory = IconViewFactory(resource, title, width, height)

    _context.action(
        discriminator = ('view', name, vfactory, layer),
        callable = handler,
        args = ('registerAdapter',
                vfactory, (for_, layer), Interface, name, _context.info)
        )

    _context.action(
        discriminator = None,
        callable = provideInterface,
        args = (for_.__module__+'.'+for_.getName(),
                for_)
        )
 def test_call_public_permission(self):
     resource = I18nResource(self.context, 'Name', permission='zope.Public')
     resource.translation(self.context, 'en', file=__file__)
     resource()
     self.assertEqual(1, len(self.context.actions))
 def _callFUT(self, *args, **kwargs):
     resource(*args, **kwargs)