Fix fallback logic for object name extraction in search.

Updated the fallback chain to check for "title" if "name" is unavailable when extracting object names in Elasticsearch results. This ensures better handling of hits where "title" is present instead of "name".
This commit is contained in:
Egor Pavlovich Gorbunov 2025-05-07 16:07:38 +03:00
parent 0cb4ae42a4
commit 974568cdee

View file

@ -69,7 +69,7 @@ def process_query(query: str = ""):
results = {"products": [], "categories": [], "brands": [], "posts": []}
for hit in response.hits:
obj_uuid = getattr(hit, "uuid", None) or hit.meta.id
obj_name = getattr(hit, "name", None) or "N/A"
obj_name = getattr(hit, "name", None) or getattr(hit, "title", None) or "N/A"
# Safely generate a slug
obj_slug = getattr(hit, "slug", None) or slugify(obj_name)
@ -160,9 +160,11 @@ def _add_multilang_fields(cls):
},
),
)
# prepare_name_{lc} to ensure no None values
def make_prepare(attr):
return lambda self, instance: getattr(instance, attr, "") or ""
setattr(cls, f"prepare_{name_field}", make_prepare(name_field))
# description_{lc}
@ -181,4 +183,4 @@ def _add_multilang_fields(cls):
},
),
)
setattr(cls, f"prepare_{desc_field}", make_prepare(desc_field))
setattr(cls, f"prepare_{desc_field}", make_prepare(desc_field))