コード例 #1
0
ファイル: blueprint.py プロジェクト: DirkHoffmann/indico
def static_asset(path, plugin=None, theme=None):
    # Ensure there's no weird stuff in the plugin/theme name
    if plugin and not plugin_engine.get_plugin(plugin):
        raise NotFound
    elif theme and theme not in theme_settings.themes:
        raise NotFound
    return send_from_directory(config.ASSETS_DIR, get_asset_path(path, plugin=plugin, theme=theme))
コード例 #2
0
ファイル: offline.py プロジェクト: jas01/indico
 def _copy_plugin_files(self, used_assets):
     css_files = {url for url in used_assets if re.match('static/plugins/.*\.css$', url)}
     for file_path in css_files:
         plugin_name, path = re.match(r'static/plugins/([^/]+)/(.+.css)', file_path).groups()
         plugin = plugin_engine.get_plugin(plugin_name)
         with open(os.path.join(plugin.root_path, 'static', path)) as f:
             rewritten_css, used_urls, __ = rewrite_css_urls(self.event, f.read())
             used_assets |= used_urls
             self._zip_file.writestr(os.path.join(self._content_dir, file_path), rewritten_css)
     for file_path in used_assets - css_files:
         match = re.match(r'static/plugins/([^/]+)/(.+)', file_path)
         if not match:
             continue
         plugin_name, path = match.groups()
         plugin = plugin_engine.get_plugin(plugin_name)
         self._copy_file(os.path.join(self._content_dir, file_path),
                         os.path.join(plugin.root_path, 'static', path))
コード例 #3
0
ファイル: __init__.py プロジェクト: cmorgia/indicoxmpp
def boshInitConnection(_login,_password):
    plugin = plugin_engine.get_plugin("indicoxmpp")
    base_host = plugin.settings.get("base_host")
    base_port = plugin.settings.get("base_port")
    jid = _login + "@" + base_host
    service = "http://{0}:{1}/http-bind".format(base_host, base_port)
    cli = BOSHClient(service, jid, _password)
    cli.init_connection()
    return cli
コード例 #4
0
ファイル: database.py プロジェクト: DirkHoffmann/indico
def cli(ctx, plugin=None, all_plugins=False):
    if plugin and all_plugins:
        raise click.BadParameter('cannot combine --plugin and --all-plugins')
    if all_plugins and ctx.invoked_subcommand in ('migrate', 'revision', 'downgrade', 'stamp', 'edit'):
        raise click.UsageError('this command requires an explicit plugin')
    if (all_plugins or plugin) and ctx.invoked_subcommand == 'prepare':
        raise click.UsageError('this command is not available for plugins (use `upgrade` instead)')
    if plugin and not plugin_engine.get_plugin(plugin):
        raise click.BadParameter('plugin does not exist or is not loaded', param_hint='plugin')
    migrate.init_app(current_app, db, os.path.join(current_app.root_path, 'migrations'))
コード例 #5
0
ファイル: i18n.py プロジェクト: OmeGak/indico
def get_translation_domain(plugin_name=_use_context):
    """Get the translation domain for the given plugin

    If `plugin_name` is omitted, the plugin will be taken from current_plugin.
    If `plugin_name` is None, the core translation domain ('indico') will be used.
    """
    if plugin_name is None:
        return get_domain()
    else:
        plugin = None
        if has_app_context():
            from indico.core.plugins import plugin_engine
            plugin = plugin_engine.get_plugin(plugin_name) if plugin_name is not _use_context else current_plugin
        if plugin:
            return plugin.translation_domain
        else:
            return get_domain()
コード例 #6
0
ファイル: core.py プロジェクト: dbourillot/indico
 def __call__(s, *args, **kwargs):
     stack = ExitStack()
     stack.enter_context(self.flask_app.app_context())
     stack.enter_context(DBMgr.getInstance().global_connection())
     if getattr(s, 'request_context', False):
         stack.enter_context(self.flask_app.test_request_context())
     args = _CelerySAWrapper.unwrap_args(args)
     kwargs = _CelerySAWrapper.unwrap_kwargs(kwargs)
     plugin = getattr(s, 'plugin', kwargs.pop('__current_plugin__', None))
     if isinstance(plugin, basestring):
         plugin_name = plugin
         plugin = plugin_engine.get_plugin(plugin)
         if plugin is None:
             stack.close()
             raise ValueError('Plugin not active: ' + plugin_name)
     stack.enter_context(plugin_context(plugin))
     with stack:
         return super(IndicoTask, s).__call__(*args, **kwargs)
コード例 #7
0
ファイル: core.py プロジェクト: DirkHoffmann/indico
 def __call__(s, *args, **kwargs):
     stack = ExitStack()
     stack.enter_context(self.flask_app.app_context())
     if getattr(s, 'request_context', False):
         stack.enter_context(self.flask_app.test_request_context(base_url=config.BASE_URL))
     args = _CelerySAWrapper.unwrap_args(args)
     kwargs = _CelerySAWrapper.unwrap_kwargs(kwargs)
     plugin = getattr(s, 'plugin', s.request.get('indico_plugin'))
     if isinstance(plugin, basestring):
         plugin_name = plugin
         plugin = plugin_engine.get_plugin(plugin)
         if plugin is None:
             stack.close()
             raise ValueError('Plugin not active: ' + plugin_name)
     stack.enter_context(plugin_context(plugin))
     clearCache()
     with stack:
         request_stats_request_started()
         return super(IndicoTask, s).__call__(*args, **kwargs)
コード例 #8
0
ファイル: i18n.py プロジェクト: nicozabala/indico
def get_translation_domain(plugin_name=_use_context):
    """Get the translation domain for the given plugin.

    If `plugin_name` is omitted, the plugin will be taken from current_plugin.
    If `plugin_name` is None, the core translation domain ('indico') will be used.
    """
    if plugin_name is None:
        return get_domain()
    else:
        plugin = None
        if has_app_context():
            from indico.core.plugins import plugin_engine
            plugin = plugin_engine.get_plugin(
                plugin_name
            ) if plugin_name is not _use_context else current_plugin
        if plugin:
            return plugin.translation_domain
        else:
            return get_domain()
コード例 #9
0
ファイル: core.py プロジェクト: r14152/indico
 def __call__(s, *args, **kwargs):
     stack = ExitStack()
     stack.enter_context(self.flask_app.app_context())
     if getattr(s, 'request_context', False):
         stack.enter_context(
             self.flask_app.test_request_context(
                 base_url=config.BASE_URL))
     args = _CelerySAWrapper.unwrap_args(args)
     kwargs = _CelerySAWrapper.unwrap_kwargs(kwargs)
     plugin = getattr(s, 'plugin', s.request.get('indico_plugin'))
     if isinstance(plugin, basestring):
         plugin_name = plugin
         plugin = plugin_engine.get_plugin(plugin)
         if plugin is None:
             stack.close()
             raise ValueError('Plugin not active: ' + plugin_name)
     stack.enter_context(plugin_context(plugin))
     clearCache()
     with stack:
         request_stats_request_started()
         return super(IndicoTask, s).__call__(*args, **kwargs)
コード例 #10
0
 def __call__(s, *args, **kwargs):
     stack = ExitStack()
     stack.enter_context(self.flask_app.app_context())
     stack.enter_context(DBMgr.getInstance().global_connection())
     if getattr(s, 'request_context', False):
         stack.enter_context(
             self.flask_app.test_request_context(
                 base_url=Config.getInstance().getBaseURL()))
     args = _CelerySAWrapper.unwrap_args(args)
     kwargs = _CelerySAWrapper.unwrap_kwargs(kwargs)
     plugin = getattr(s, 'plugin',
                      kwargs.pop('__current_plugin__', None))
     if isinstance(plugin, basestring):
         plugin_name = plugin
         plugin = plugin_engine.get_plugin(plugin)
         if plugin is None:
             stack.close()
             raise ValueError('Plugin not active: ' + plugin_name)
     stack.enter_context(plugin_context(plugin))
     clearCache()
     with stack:
         return super(IndicoTask, s).__call__(*args, **kwargs)
コード例 #11
0
ファイル: database.py プロジェクト: DirkHoffmann/indico
def _call_with_plugins(*args, **kwargs):
    func = kwargs.pop('_func')
    ctx = click.get_current_context()
    all_plugins = ctx.parent.params['all_plugins']
    plugin = ctx.parent.params['plugin']
    if plugin:
        plugins = {plugin_engine.get_plugin(plugin)}
    elif all_plugins:
        plugins = set(plugin_engine.get_active_plugins().viewvalues())
    else:
        plugins = None

    if plugins is None:
        func(*args, **kwargs)
    else:
        PluginScriptDirectory.dir = os.path.join(current_app.root_path, 'core', 'plugins', 'alembic')
        alembic.command.ScriptDirectory = PluginScriptDirectory
        for plugin in plugins:
            if not os.path.exists(plugin.alembic_versions_path):
                print cformat("%{cyan}skipping plugin '{}' (no migrations folder)").format(plugin.name)
                continue
            print cformat("%{cyan!}executing command for plugin '{}'").format(plugin.name)
            with plugin.plugin_context():
                func(*args, **kwargs)
コード例 #12
0
def _call_with_plugins(*args, **kwargs):
    func = kwargs.pop('_func')
    ctx = click.get_current_context()
    all_plugins = ctx.parent.params['all_plugins']
    plugin = ctx.parent.params['plugin']
    if plugin:
        plugins = {plugin_engine.get_plugin(plugin)}
    elif all_plugins:
        plugins = set(plugin_engine.get_active_plugins().viewvalues())
    else:
        plugins = None

    if plugins is None:
        func(*args, **kwargs)
    else:
        PluginScriptDirectory.dir = os.path.join(current_app.root_path, 'core', 'plugins', 'alembic')
        alembic.command.ScriptDirectory = PluginScriptDirectory
        for plugin in plugins:
            if not os.path.exists(plugin.alembic_versions_path):
                print(cformat("%{cyan}skipping plugin '{}' (no migrations folder)").format(plugin.name))
                continue
            print(cformat("%{cyan!}executing command for plugin '{}'").format(plugin.name))
            with plugin.plugin_context():
                func(*args, **kwargs)
コード例 #13
0
ファイル: controllers.py プロジェクト: nyimbi/indico
 def _checkParams(self):
     self.plugin = plugin_engine.get_plugin(request.view_args['plugin'])
     if not self.plugin or not self.plugin.configurable:
         raise NotFound
コード例 #14
0
def plugin_file(plugin, filename, fileext, version=None):
    plugin = plugin_engine.get_plugin(plugin)
    if not plugin:
        raise NotFound
    assets_dir = os.path.join(plugin.root_path, 'static')
    return send_from_directory(assets_dir, filename + '.' + fileext)
コード例 #15
0
ファイル: controllers.py プロジェクト: indico/indico
 def _checkParams(self):
     self.plugin = plugin_engine.get_plugin(request.view_args["plugin"])
     if not self.plugin or not self.plugin.configurable:
         raise NotFound
コード例 #16
0
ファイル: controllers.py プロジェクト: ThiefMaster/indico
 def _process_args(self):
     self.plugin = plugin_engine.get_plugin(request.view_args['plugin'])
     if not self.plugin or not self.plugin.configurable:
         raise NotFound
コード例 #17
0
ファイル: blueprint.py プロジェクト: jas01/indico
def plugin_file(plugin, filename, fileext, version=None):
    plugin = plugin_engine.get_plugin(plugin)
    if not plugin:
        raise NotFound
    assets_dir = os.path.join(plugin.root_path, 'static')
    return send_from_directory(assets_dir, filename + '.' + fileext)