예제 #1
0
def prepare_installable_plugins_list():
    """
    Return a list of plugins able to be installed.
    At the moment this does not employ any pagination. The lists are small enough
    that it can all be done frontend. However that may change in the future.

    :return:
    """
    plugins = PluginsHandler()
    # Fetch a list of plugin data cached locally
    return plugins.get_installable_plugins_list()
예제 #2
0
    def __get_plugin_info_and_settings(self, plugin_id):
        plugins = PluginsHandler()

        plugin_installed = True
        plugin_results = plugins.get_plugin_list_filtered_and_sorted(
            plugin_id=plugin_id)
        if not plugin_results:
            # This plugin is not installed
            plugin_installed = False

            # Try to fetch it from the repository
            plugin_list = plugins.get_installable_plugins_list()
            for plugin in plugin_list:
                if plugin.get('id') == plugin_id:
                    # Create changelog text from remote changelog text file
                    plugin['changelog'] = plugins.read_remote_changelog_file(
                        plugin.get('changelog_url'))
                    # Create list as the 'plugin_results' var above will also have returned a list if any results were found.
                    plugin_results = [plugin]
                    break

        # Iterate over plugins and append them to the plugin data
        plugin_data = {}
        for plugin_result in plugin_results:
            # Set params as required in template
            plugin_data = {
                'id': plugin_result.get('id'),
                'plugin_id': plugin_result.get('plugin_id'),
                'icon': plugin_result.get('icon'),
                'name': plugin_result.get('name'),
                'description': plugin_result.get('description'),
                'tags': plugin_result.get('tags'),
                'author': plugin_result.get('author'),
                'version': plugin_result.get('version'),
                'changelog': plugin_result.get('changelog', ''),
                'settings': [],
            }
            if plugin_installed:
                plugin_data['settings'] = self.__get_plugin_settings(
                    plugin_result.get('plugin_id'))
                plugin_data['changelog'] = "".join(
                    self.__get_plugin_changelog(
                        plugin_result.get('plugin_id')))
                plugin_data['description'] += "\n" + "".join(
                    self.__get_plugin_long_description(
                        plugin_result.get('plugin_id')))
            break

        return plugin_data
예제 #3
0
    def __get_plugin_info_and_settings(self, plugin_id):
        plugins = PluginsHandler()

        plugin_installed = True
        plugin_results = plugins.get_plugin_list_filtered_and_sorted(
            plugin_id=plugin_id)
        if not plugin_results:
            # This plugin is not installed
            plugin_installed = False

            # Try to fetch it from the repository
            plugin_list = plugins.get_installable_plugins_list()
            for plugin in plugin_list:
                if plugin.get('id') == plugin_id:
                    plugin_results = [plugin]
                    break

        # Iterate over plugins and append them to the plugin data
        plugin_data = {}
        for plugin_result in plugin_results:
            # Set params as required in template
            plugin_data = {
                'id': plugin_result.get('id'),
                'plugin_id': plugin_result.get('plugin_id'),
                'icon': plugin_result.get('icon'),
                'name': plugin_result.get('name'),
                'description': plugin_result.get('description'),
                'tags': plugin_result.get('tags'),
                'author': plugin_result.get('author'),
                'version': plugin_result.get('version'),
                'settings': [],
            }
            if plugin_installed:
                plugin_data['settings'] = self.__get_plugin_settings(
                    plugin_result.get('plugin_id'))
                plugin_data['changelog'] = "".join(
                    self.__get_plugin_changelog(
                        plugin_result.get('plugin_id')))
            break

        return plugin_data
예제 #4
0
 def get_plugin_list(self, *args, **kwargs):
     plugins = PluginsHandler()
     # Fetch a list of plugin data cached locally
     plugin_list = plugins.get_installable_plugins_list()
     self.write(json.dumps({"success": True, "plugins": plugin_list}))
예제 #5
0
def prepare_plugin_info_and_settings(plugin_id,
                                     prefer_local=True,
                                     library_id=None):
    """
    Returns a object of plugin metadata and current settings for the requested plugin_id

    :param prefer_local:
    :param plugin_id:
    :param library_id:
    :return:
    """
    plugins_handler = PluginsHandler()

    plugin_installed = True
    plugin_results = plugins_handler.get_plugin_list_filtered_and_sorted(
        plugin_id=plugin_id)

    if not plugin_results:
        # This plugin is not installed
        plugin_installed = False

    if not plugin_results or not prefer_local:
        # Try to fetch it from the repository
        plugin_list = plugins_handler.get_installable_plugins_list()
        for plugin in plugin_list:
            if plugin.get('plugin_id') == plugin_id:
                # Create changelog text from remote changelog text file
                plugin[
                    'changelog'] = plugins_handler.read_remote_changelog_file(
                        plugin.get('changelog_url'))
                # Create list as the 'plugin_results' var above will also have returned a list if any results were found.
                plugin_results = [plugin]
                break

    # Iterate over plugins and append them to the plugin data
    plugin_data = {}
    for plugin_result in plugin_results:
        # Set plugin status
        plugin_status = {
            "installed": plugin_result.get('installed', False),
            "update_available": plugin_result.get('update_available', False),
        }
        # Set params as required in template
        plugin_data = {
            'id': plugin_result.get('id'),
            'plugin_id': plugin_result.get('plugin_id'),
            'icon': plugin_result.get('icon'),
            'name': plugin_result.get('name'),
            'description': plugin_result.get('description'),
            'tags': plugin_result.get('tags'),
            'author': plugin_result.get('author'),
            'version': plugin_result.get('version'),
            'changelog': plugin_result.get('changelog', ''),
            'status': plugin_status,
            'settings': [],
        }
        if plugin_installed:
            plugin_data['settings'] = get_plugin_settings(
                plugin_result.get('plugin_id'), library_id=library_id)
            plugin_data['changelog'] = "".join(
                get_plugin_changelog(plugin_result.get('plugin_id')))
            plugin_data['description'] += "\n" + "".join(
                get_plugin_long_description(plugin_result.get('plugin_id')))
        break

    return plugin_data