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))
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))
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
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'))
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()
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)
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)
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()
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)
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)
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)
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)
def _checkParams(self): self.plugin = plugin_engine.get_plugin(request.view_args['plugin']) if not self.plugin or not self.plugin.configurable: raise NotFound
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)
def _checkParams(self): self.plugin = plugin_engine.get_plugin(request.view_args["plugin"]) if not self.plugin or not self.plugin.configurable: raise NotFound
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