示例#1
0
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
示例#2
0
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)