diff --git a/netbox/extras/models/search.py b/netbox/extras/models/search.py index 5444d64bd..8069d260c 100644 --- a/netbox/extras/models/search.py +++ b/netbox/extras/models/search.py @@ -4,6 +4,7 @@ from django.contrib.contenttypes.models import ContentType from django.db import models from django.utils.translation import gettext_lazy as _ +from netbox.search.utils import get_indexer from netbox.registry import registry from utilities.fields import RestrictedGenericForeignKey from utilities.utils import content_type_identifier @@ -61,9 +62,12 @@ class CachedValue(models.Model): @property def display_attrs(self): - indexer = registry['search'].get(content_type_identifier(self.object_type)) + """ + Render any display attributes associated with this search result. + """ + indexer = get_indexer(self.object_type) attrs = {} - for attr in getattr(indexer, 'display_attrs', []): + for attr in indexer.display_attrs: name = self.object._meta.get_field(attr).verbose_name if value := getattr(self.object, attr): if display_func := getattr(self.object, f'get_{attr}_display', None): diff --git a/netbox/netbox/search/utils.py b/netbox/netbox/search/utils.py new file mode 100644 index 000000000..824fbfb3d --- /dev/null +++ b/netbox/netbox/search/utils.py @@ -0,0 +1,14 @@ +from netbox.registry import registry +from utilities.utils import content_type_identifier + +__all__ = ( + 'get_indexer', +) + + +def get_indexer(content_type): + """ + Return the registered search indexer for the given ContentType. + """ + ct_identifier = content_type_identifier(content_type) + return registry['search'].get(ct_identifier)