From 06eb3a81b6394aab13b7414166f1d25a377225de Mon Sep 17 00:00:00 2001 From: Oliver Date: Sun, 29 Jan 2023 15:44:04 +1100 Subject: [PATCH] Force builtin plugins to be active (#4276) * Force builtin plugins to be active - Not setting the "active" flag can cause ambiguous errors - e.g. some settings don't work if the plugin is inactive - By design, builtin plugins are always "active" anyway - This PR just forces the active field to True * Fix unit tests --- InvenTree/plugin/models.py | 4 ++++ InvenTree/plugin/registry.py | 5 +++++ InvenTree/plugin/test_api.py | 5 ----- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/InvenTree/plugin/models.py b/InvenTree/plugin/models.py index d3e8bba1f2..7afd741298 100644 --- a/InvenTree/plugin/models.py +++ b/InvenTree/plugin/models.py @@ -148,6 +148,10 @@ class PluginConfig(models.Model): ret = super().save(force_insert, force_update, *args, **kwargs) + if self.is_builtin(): + # Force active if builtin + self.active = True + if not reload: if (self.active is False and self.__org_active is True) or \ (self.active is True and self.__org_active is False): diff --git a/InvenTree/plugin/registry.py b/InvenTree/plugin/registry.py index 1b81c22a98..05a67193ba 100644 --- a/InvenTree/plugin/registry.py +++ b/InvenTree/plugin/registry.py @@ -408,6 +408,11 @@ class PluginsRegistry: # Check if this is a 'builtin' plugin builtin = plg.check_is_builtin() + # Auto-enable builtin plugins + if builtin and plg_db and not plg_db.active: + plg_db.active = True + plg_db.save() + # Determine if this plugin should be loaded: # - If PLUGIN_TESTING is enabled # - If this is a 'builtin' plugin diff --git a/InvenTree/plugin/test_api.py b/InvenTree/plugin/test_api.py index 122445973f..919fdf9cb6 100644 --- a/InvenTree/plugin/test_api.py +++ b/InvenTree/plugin/test_api.py @@ -193,8 +193,3 @@ class PluginDetailAPITest(PluginMixin, InvenTreeAPITestCase): with self.assertRaises(NotFound) as exc: check_plugin(plugin_slug=None, plugin_pk='123') self.assertEqual(str(exc.exception.detail), "Plugin '123' not installed") - - # Not active - with self.assertRaises(NotFound) as exc: - check_plugin(plugin_slug='inventreebarcode', plugin_pk=None) - self.assertEqual(str(exc.exception.detail), "Plugin 'inventreebarcode' is not active")