예제 #1
0
    def test_entry_point(self):
        # Test entry_point support tools
        self.check_output("""
        [...EntryPoint.parse('register = yafowil.loader:register')...]
        """, str(get_entry_points()))

        self.assertEqual(get_entry_points('nonexisting'), [])

        self.check_output("""
        [...'yafowil'...]
        """, str((get_plugin_names())))

        self.assertEqual(get_plugin_names('nonexisting'), [])
예제 #2
0
    def test_entry_point(self):
        # Test entry_point support tools
        self.check_output(
            """
        [...EntryPoint.parse('register = yafowil.loader:register')...]
        """, str(get_entry_points()))

        self.assertEqual(get_entry_points('nonexisting'), [])

        self.check_output("""
        [...'yafowil'...]
        """, str((get_plugin_names())))

        self.assertEqual(get_plugin_names('nonexisting'), [])
예제 #3
0
    def __init__(self, js_skip=[], css_skip=[]):
        """Initialize YAFOWIL resources.

        This object normally gets instanciated only once at application
        startup.

        :param js_skip: ignored resource groups when aggregating JS resources.
        :param css_skip: ignored resource groups when aggregating CSS
                         resources.
        """
        all_js = list()
        all_css = list()
        for plugin_name in get_plugin_names():
            resources = factory.resources_for(plugin_name)
            if not resources:
                continue
            resources = copy.deepcopy(resources)
            resource_base = self.configure_resource_directory(
                plugin_name, resources['resourcedir'])
            for js in resources['js']:
                if js['group'] in js_skip:
                    continue
                if not self._is_remote_resource(js['resource']):
                    js['resource'] = resource_base + '/' + js['resource']
                all_js.append(js)
            for css in resources['css']:
                if css['group'] in css_skip:
                    continue
                if not self._is_remote_resource(css['resource']):
                    css['resource'] = resource_base + '/' + css['resource']
                all_css.append(css)
        all_js = sorted(all_js, key=lambda x: x['order'])
        all_css = sorted(all_css, key=lambda x: x['order'])
        self.js_resources = [res['resource'] for res in all_js]
        self.css_resources = [res['resource'] for res in all_css]
예제 #4
0
def enabled_resources(which, verbose=False):
    """Return enabled YAFOWIL resources.

    ``which`` is either "js" or "css".
    """
    result = list()
    registry = getUtility(IRegistry)
    for plugin_name in get_plugin_names():
        resources = factory.resources_for(plugin_name)
        if not resources:
            continue
        resourcedir = resources['resourcedir']
        for record in resources[which]:
            if not registry.get(record['group']):
                verbose and logger.warning(
                    "Skipping resource '%s' for group '%s'" %
                    (record['resource'], record['group']))
                continue
            if 'order' not in record:
                record['order'] = sys.maxint
            if record['resource'].startswith('http'):
                record['url'] = record['resource']
                record['path'] = None
            else:
                resdirname = '++resource++%s' % plugin_name
                record['url'] = '%s/%s' % (resdirname, record['resource'])
                record['path'] = os.path.join(resourcedir, record['resource'])
            result.append(record)
            verbose and logger.info("Activate resource '%s' for group '%s'" %
                                    (record['resource'], record['group']))
    return sorted(result, key=itemgetter('order'))
예제 #5
0
    def __init__(self, js_skip=[], css_skip=[]):
        """Initialize YAFOWIL resources.

        This object normally gets instanciated only once at application
        startup.

        :param js_skip: ignored resource groups when aggregating JS resources.
        :param css_skip: ignored resource groups when aggregating CSS
                         resources.
        """
        all_js = list()
        all_css = list()
        for plugin_name in get_plugin_names():
            resources = factory.resources_for(plugin_name)
            if not resources:
                continue
            resources = copy.deepcopy(resources)
            resource_base = self.configure_resource_directory(
                plugin_name, resources['resourcedir'])
            for js in resources['js']:
                if js['group'] in js_skip:
                    continue
                if not self._is_remote_resource(js['resource']):
                    js['resource'] = resource_base + '/' + js['resource']
                all_js.append(js)
            for css in resources['css']:
                if css['group'] in css_skip:
                    continue
                if not self._is_remote_resource(css['resource']):
                    css['resource'] = resource_base + '/' + css['resource']
                all_css.append(css)
        all_js = sorted(all_js, key=lambda x: x['order'])
        all_css = sorted(all_css, key=lambda x: x['order'])
        self.js_resources = [res['resource'] for res in all_js]
        self.css_resources = [res['resource'] for res in all_css]
예제 #6
0
def yafowil_resource_directive(_context):
    """Register plugin resource directories as plone resource directories
    to be accessible via browser URL.
    """
    for plugin_name in get_plugin_names():
        resources = factory.resources_for(plugin_name)
        if not resources:
            continue
        resourceDirectory(_context, plugin_name, resources['resourcedir'])
예제 #7
0
def _extract_resources(which):
    result = list()
    registry = getUtility(IRegistry)
    for plugin_name in get_plugin_names():
        resources = factory.resources_for(plugin_name)
        if not resources:
            continue
        for record in resources[which]:
            if not registry.get(record['group']):
                logger.warning("Skipping resource '%s' for group '%s'" % (
                               record['resource'], record['group']))
                continue
            if 'order' not in record:
                record['order'] = sys.maxint
            if record['resource'].startswith('http'):
                record['url'] = record['resource']
            else:
                resdirname = '++resource++%s' % plugin_name
                record['url'] = '%s/%s' % (resdirname, record['resource'])
            result.append(record)
            logger.info("Activate resource '%s' for group '%s'" % (
                        record['resource'], record['group']))
    return sorted(result, key=itemgetter('order'))
예제 #8
0
def enabled_resources(which, verbose=True):
    """Return enabled YAFOWIL resources.

    ``which`` is either "js" or "css".
    """
    result = list()
    registry = getUtility(IRegistry)
    for plugin_name in get_plugin_names():
        resources = factory.resources_for(plugin_name)
        if not resources:
            continue
        resourcedir = resources['resourcedir']
        for record in resources[which]:
            if not registry.get(record['group']):
                verbose and logger.warning(
                    "Skipping resource '%s' for group '%s'" % (
                        record['resource'], record['group']
                    )
                )
                continue
            if 'order' not in record:
                record['order'] = sys.maxint
            if record['resource'].startswith('http'):
                record['url'] = record['resource']
                record['path'] = None
            else:
                resdirname = '++resource++%s' % plugin_name
                record['url'] = '%s/%s' % (resdirname, record['resource'])
                record['path'] = os.path.join(resourcedir, record['resource'])
            result.append(record)
            verbose and logger.info(
                "Activate resource '%s' for group '%s' order: '%s'" % (
                    record['resource'], record['group'], record['order']
                )
            )
    return sorted(result, key=itemgetter('order'))
예제 #9
0
def yafowil_resource_directive(_context):
    for plugin_name in get_plugin_names():
        resources = factory.resources_for(plugin_name)
        if not resources:
            continue
        resourceDirectory(_context, plugin_name, resources['resourcedir'])