def handle(self, *args, **options): """ Adds the missing plugins to database (``dash.models.DashboardPlugin``). This command shall be ran every time a developer adds a new plugin. """ dashboard_entries = DashboardEntry._default_manager.all().only('id', 'plugin_uid', 'layout_uid') \ .values_list('id', 'plugin_uid', 'layout_uid') broken_plugin_entries = [] broken_layout_entries = [] registered_plugin_uids = get_registered_plugin_uids() registered_layout_uids = get_registered_layout_uids() for entry_id, plugin_uid, layout_uid in dashboard_entries: if not plugin_uid in registered_plugin_uids: broken_plugin_entries.append((entry_id, plugin_uid)) if not layout_uid in registered_layout_uids: broken_layout_entries.append((entry_id, layout_uid)) if broken_plugin_entries: print_("Broken plugin entries found!", broken_plugin_entries) if broken_layout_entries: print_("Broken layout entries found!", broken_layout_entries)
def sync_plugins(): """ Syncs the registered plugin list with data in ``dash.models.DashboardPlugin``. """ # If not in restricted mode, the quit. if not RESTRICT_PLUGIN_ACCESS: return registered_plugins = set(get_registered_plugin_uids()) synced_plugins = set([p.plugin_uid for p in \ DashboardPlugin._default_manager.only('plugin_uid')]) non_synced_plugins = registered_plugins - synced_plugins if not non_synced_plugins: return buf = [] for plugin_uid in non_synced_plugins: buf.append(DashboardPlugin(plugin_uid=plugin_uid)) DashboardPlugin._default_manager.bulk_create(buf)
def get_user_plugin_uids(user): """ Gets a list of user plugin uids as a list . If not yet autodiscovered, autodiscovers them. :return list: """ ensure_autodiscover() if not RESTRICT_PLUGIN_ACCESS or getattr(user, 'is_superuser', False): return get_registered_plugin_uids() registered_plugins = [] allowed_plugin_uids = get_allowed_plugin_uids(user) for uid in plugin_registry._registry.items(): if uid in allowed_plugin_uids: registered_plugins.append(uid) return registered_plugins
def get_user_plugin_uids(user): """ Gets a list of user plugin uids as a list . If not yet autodiscovered, autodiscovers them. :return list: """ ensure_autodiscover() if not RESTRICT_PLUGIN_ACCESS or getattr(user, 'is_superuser', False): return get_registered_plugin_uids() registered_plugins = [] allowed_plugin_uids = get_allowed_plugin_uids(user) for uid, plugin in plugin_registry._registry.items(): if uid in allowed_plugin_uids: registered_plugins.append(uid) return registered_plugins