2
0
mirror of https://github.com/inventree/InvenTree.git synced 2025-07-01 11:10:54 +00:00

Refactor mixin_enabled calls (#9825)

- Ensure the enumerated values are used
This commit is contained in:
Oliver
2025-06-22 11:28:48 +10:00
committed by GitHub
parent cc40af6199
commit 785bda26c4
7 changed files with 13 additions and 9 deletions

View File

@ -12,6 +12,7 @@ import InvenTree.exceptions
from common.settings import get_global_setting
from InvenTree.ready import canAppAccessDatabase, isImportingData
from InvenTree.tasks import offload_task
from plugin import PluginMixinEnum
from plugin.registry import registry
tracer = trace.get_tracer(__name__)
@ -73,7 +74,7 @@ def register_event(event, *args, **kwargs):
with transaction.atomic():
for slug, plugin in registry.plugins.items():
if not plugin.mixin_enabled('events'):
if not plugin.mixin_enabled(PluginMixinEnum.EVENTS):
continue
# Only allow event registering for 'active' plugins

View File

@ -57,7 +57,7 @@ class AppMixin:
# add them to the INSTALLED_APPS
for _key, plugin in plugins:
if plugin.mixin_enabled('app'):
if plugin.mixin_enabled(PluginMixinEnum.APP):
plugin_path = cls._get_plugin_path(plugin)
if plugin_path not in settings.INSTALLED_APPS:
settings.INSTALLED_APPS += [plugin_path]

View File

@ -67,7 +67,10 @@ class ScheduleMixin:
if settings.PLUGIN_TESTING or get_global_setting('ENABLE_PLUGINS_SCHEDULE'):
for _key, plugin in plugins:
if plugin.mixin_enabled('schedule') and plugin.is_active():
if (
plugin.mixin_enabled(PluginMixinEnum.SCHEDULE)
and plugin.is_active()
):
# Only active tasks for plugins which are enabled
plugin.register_tasks()
task_keys += plugin.get_task_names()

View File

@ -47,7 +47,7 @@ class SettingsMixin:
registry.mixins_settings = {}
for slug, plugin in plugins:
if plugin.mixin_enabled('settings'):
if plugin.mixin_enabled(PluginMixinEnum.SETTINGS):
plugin_setting = plugin.settings
registry.mixins_settings[slug] = plugin_setting

View File

@ -49,7 +49,7 @@ class UrlsMixin:
urls_changed = False
# check whether an activated plugin extends UrlsMixin
for _key, plugin in plugins:
if plugin.mixin_enabled('urls'):
if plugin.mixin_enabled(PluginMixinEnum.URLS):
urls_changed = True
# if apps were changed or force loading base apps -> reload
if urls_changed or force_reload or full_reload:

View File

@ -4,6 +4,7 @@ from django.conf import settings
from django.urls import include, re_path
from common.validators import get_global_setting
from plugin import PluginMixinEnum
PLUGIN_BASE = 'plugin' # Constant for links
@ -16,7 +17,7 @@ def get_plugin_urls():
if get_global_setting('ENABLE_PLUGINS_URL', False) or settings.PLUGIN_TESTING_SETUP:
for plugin in registry.plugins.values():
if plugin.mixin_enabled('urls'):
if plugin.mixin_enabled(PluginMixinEnum.URLS):
urls.append(plugin.urlpatterns)
return re_path(f'^{PLUGIN_BASE}/', include((urls, 'plugin')))

View File

@ -11,8 +11,6 @@ from django_filters.rest_framework import DjangoFilterBackend
from rest_framework.generics import GenericAPIView
from rest_framework.response import Response
import InvenTree.exceptions
import InvenTree.helpers
import InvenTree.permissions
import report.helpers
import report.models
@ -22,6 +20,7 @@ from common.serializers import DataOutputSerializer
from InvenTree.api import MetadataView
from InvenTree.filters import InvenTreeSearchFilter
from InvenTree.mixins import ListCreateAPI, RetrieveUpdateDestroyAPI
from plugin import PluginMixinEnum
from plugin.builtin.labels.inventree_label import InvenTreeLabelPlugin
@ -121,7 +120,7 @@ class LabelPrint(GenericAPIView):
error = _('Plugin not found')
elif not plugin.is_active():
error = _('Plugin is not active')
elif not plugin.mixin_enabled('labels'):
elif not plugin.mixin_enabled(PluginMixinEnum.LABELS):
error = _('Plugin does not support label printing')
if error: