예제 #1
0
    def prepare_filtered_plugins(self, request_dict):
        """
        Returns a object of records filtered and sorted
        according to the provided request.

        :param request_dict:
        :return:
        """

        # Generate filters for query
        start = request_dict.get('start')
        length = request_dict.get('length')

        search = request_dict.get('search')
        search_value = search.get("value")

        # Force sort order always by ID desc
        order = [{
            "column": 'name',
            "dir": 'asc',
        }]

        # Fetch Plugins
        plugins = PluginsHandler()
        # Get total count
        records_total_count = plugins.get_total_plugin_list_count()
        # Get quantity after filters (without pagination)
        records_filtered_count = plugins.get_plugin_list_filtered_and_sorted(
            order=order, start=0, length=0, search_value=search_value).count()
        # Get filtered/sorted results
        plugin_results = plugins.get_plugin_list_filtered_and_sorted(
            order=order, start=start, length=length, search_value=search_value)

        # Build return data
        return_data = {
            "draw": request_dict.get('draw'),
            "recordsTotal": records_total_count,
            "recordsFiltered": records_filtered_count,
            "successCount": 0,
            "failedCount": 0,
            "data": []
        }

        # Iterate over plugins and append them to the plugin data
        for plugin_result in plugin_results:
            # Set plugin status
            plugin_status = {
                "enabled": plugin_result.get('enabled'),
                "update_available": plugin_result.get('update_available'),
            }
            # Set params as required in template
            item = {
                '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'),
                'status': plugin_status,
                'selected': False,
            }
            return_data["data"].append(item)

        # Return results
        return return_data
예제 #2
0
def prepare_filtered_plugins(params):
    """
    Returns a object of records filtered and sorted
    according to the provided request.

    :param params:
    :return:
    """
    start = params.get('start', 0)
    length = params.get('length', 0)

    search_value = params.get('search_value', '')

    # Note that plugins can be ordered in multiple ways. So this must be a list
    order = [params.get('order', {
        "column": 'name',
        "dir": 'desc',
    })]

    # Fetch Plugins
    plugins = PluginsHandler()
    plugin_executor = PluginExecutor()
    # Get total count
    records_total_count = plugins.get_total_plugin_list_count()
    # Get quantity after filters (without pagination)
    records_filtered_count = plugins.get_plugin_list_filtered_and_sorted(
        order=order, start=0, length=0, search_value=search_value).count()
    # Get filtered/sorted results
    plugin_results = plugins.get_plugin_list_filtered_and_sorted(
        order=order, start=start, length=length, search_value=search_value)

    # Build return data
    return_data = {
        "recordsTotal": records_total_count,
        "recordsFiltered": records_filtered_count,
        "results": []
    }

    # Iterate over plugins and append them to the plugin data
    for plugin_result in plugin_results:
        # Set plugin status
        plugin_status = {
            "update_available": plugin_result.get('update_available'),
        }
        # Check if plugin is able to be configured
        has_config = False
        plugin_settings, plugin_settings_meta = plugin_executor.get_plugin_settings(
            plugin_result.get('plugin_id'))
        if plugin_settings:
            has_config = True
        # Set params as required in template
        item = {
            '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'),
            'status': plugin_status,
            'has_config': has_config,
        }
        return_data["results"].append(item)

    # Return results
    return return_data