def test_installed_plugins(): """ Test all plugin runners for correct return data :return: """ plugin_executor = PluginExecutor() plugins = PluginsHandler() order = { "column": 'position', "dir": 'desc', } plugin_results = plugins.get_plugin_list_filtered_and_sorted(order=order, start=0, length=None) for plugin_result in plugin_results: # plugin_runners = plugin_executor.get_plugin_runners('worker.process_item') print("{1}Testing plugin: '{0}'{2}".format(plugin_result.get("name"), BColours.HEADER, BColours.ENDC)) plugin_id = plugin_result.get("plugin_id") # Test Plugin runners print(" {0}Testing runners{1}".format(BColours.SUBHEADER, BColours.ENDC)) plugin_types_in_plugin = plugin_executor.get_all_plugin_types_in_plugin(plugin_id) if not plugin_types_in_plugin: error = "No runners found in plugin" print(" - {1}FAILED: {0}{2}".format(error, BColours.FAIL, BColours.ENDC)) else: for plugin_type_in_plugin in plugin_types_in_plugin: errors = plugin_executor.test_plugin_runner(plugin_id, plugin_type_in_plugin) if errors: for error in errors: print(" - {1}FAILED: {0}{2}".format(error, BColours.FAIL, BColours.ENDC)) else: print(" - {}PASSED{}".format(BColours.OKGREEN, BColours.ENDC)) # Test Plugin settings print(" {0}Testing settings{1}".format(BColours.SUBHEADER, BColours.ENDC)) errors, plugin_settings = plugin_executor.test_plugin_settings(plugin_id) if errors: for error in errors: print(" - {1}FAILED: {0}{2}".format(error, BColours.FAIL, BColours.ENDC)) else: formatted_plugin_settings = json.dumps(plugin_settings, indent=1) formatted_plugin_settings = formatted_plugin_settings.replace('\n', '\n' + ' ') print(" - {1}Settings: {0}{2}".format(formatted_plugin_settings, BColours.RESULTS, BColours.ENDC)) print(" - {}PASSED{}".format(BColours.OKGREEN, BColours.ENDC)) print()
def __set_default_plugin_flow_priority(self, plugin_list): from unmanic.libs.unplugins import PluginExecutor plugin_executor = PluginExecutor() from unmanic.libs.plugins import PluginsHandler plugin_handler = PluginsHandler() # Fetch current items configured_plugin_ids = [] query = LibraryPluginFlow.select().where( LibraryPluginFlow.library_id == self.model.id) for flow_item in query: configured_plugin_ids.append(flow_item.plugin_id.plugin_id) for plugin in plugin_list: # Ignore already configured plugins if plugin.get('plugin_id') in configured_plugin_ids: continue plugin_info = plugin_handler.get_plugin_info( plugin.get('plugin_id')) plugin_priorities = plugin_info.get('priorities') if plugin_priorities: # Fetch the plugin info back from the DB plugin_info = Plugins.select().where( Plugins.plugin_id == plugin.get("plugin_id")).first() # Fetch all plugin types in this plugin plugin_types_in_plugin = plugin_executor.get_all_plugin_types_in_plugin( plugin.get("plugin_id")) # Loop over the plugin types in this plugin for plugin_type in plugin_types_in_plugin: # get the plugin runner function name for this runner plugin_type_meta = plugin_executor.get_plugin_type_meta( plugin_type) runner_string = plugin_type_meta.plugin_runner() if plugin_priorities.get(runner_string) and int( plugin_priorities.get(runner_string, 0)) > 0: # If the runner has a priority set and that value is greater than 0 (default that wont set anything), # Save the priority PluginsHandler.set_plugin_flow_position_for_single_plugin( plugin_info, plugin_type, self.model.id, plugin_priorities.get(runner_string))