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_) )
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)