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
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