8927 fix for plugin search

This commit is contained in:
Arthur 2022-09-27 17:11:23 -07:00 committed by jeremystretch
parent 57825bf5b7
commit 06164b5d1a
2 changed files with 9 additions and 2 deletions

View File

@ -649,7 +649,6 @@ RQ_QUEUES = {
# #
for plugin_name in PLUGINS: for plugin_name in PLUGINS:
# Import plugin module # Import plugin module
try: try:
plugin = importlib.import_module(plugin_name) plugin = importlib.import_module(plugin_name)

View File

@ -1,8 +1,10 @@
import importlib
import inspect import inspect
import sys import sys
from django.apps import AppConfig from django.apps import AppConfig
from django.apps import apps from django.apps import apps
from django.conf import settings
from django.utils.module_loading import module_has_submodule from django.utils.module_loading import module_has_submodule
from netbox import denormalized from netbox import denormalized
@ -30,7 +32,13 @@ class SearchConfig(AppConfig):
submodule_name = "search_indexes" submodule_name = "search_indexes"
if module_has_submodule(module, submodule_name): if module_has_submodule(module, submodule_name):
module_name = f"{name}.{submodule_name}" module_name = f"{name}.{submodule_name}"
for cls_name, cls_obj in inspect.getmembers(sys.modules[module_name], predicate=inspect.isclass): if name in settings.PLUGINS:
search_module = importlib.import_module(module_name)
else:
search_module = sys.modules[module_name]
cls_objects = inspect.getmembers(search_module, predicate=inspect.isclass)
for cls_name, cls_obj in inspect.getmembers(search_module, predicate=inspect.isclass):
if getattr(cls_obj, "search_index", False) and getattr(cls_obj, "model", None): if getattr(cls_obj, "search_index", False) and getattr(cls_obj, "model", None):
cls_name = cls_obj.model.__name__.lower() cls_name = cls_obj.model.__name__.lower()
if not default_search_engine.is_registered(cls_name, cls_obj): if not default_search_engine.is_registered(cls_name, cls_obj):