def get_active_and_inactive_plugins(plugin_kind='machines'): output = {'active': [], 'inactive': []} model = PLUGIN_MODELS[plugin_kind][0] plugin_type = PLUGIN_MODELS[plugin_kind][1] for plugin in PluginManager.get_all_plugins(): # Filter out plugins of other types. if not isinstance(plugin, plugin_type): continue try: db_plugin = model.objects.get(name=plugin.name) output['active'].append((plugin, db_plugin)) except model.DoesNotExist: output['inactive'].append(plugin) if not model == Report: output['active'].sort(key=lambda i: i[1].order) return output
def reload_plugins_model(): """Remove now-absent plugins from db, refresh defaults if needed.""" load_default_plugins() found = {plugin.name for plugin in PluginManager.get_all_plugins()} for model in (Plugin, Report, MachineDetailPlugin): _update_plugin_record(model, found)