Skip to content

Commit

Permalink
moves localize_descriptors logic into own search_component, LocalizeR…
Browse files Browse the repository at this point in the history
…esultDescriptors, re #10804
  • Loading branch information
whatisgalen committed Apr 19, 2024
1 parent 138e6dd commit cdc9eec
Showing 1 changed file with 31 additions and 0 deletions.
31 changes: 31 additions & 0 deletions arches/app/search/components/localize_result_descriptors.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
from arches.app.models.system_settings import settings
from arches.app.search.components.base import BaseSearchFilter
from django.utils.translation import get_language, gettext as _

class LocalizeResultDescriptors(BaseSearchFilter):
def view_data(self):
pass

def post_search_hook(self, search_results_object, response_object, permitted_nodegroups, request):

def get_localized_descriptor(resource, descriptor_type, language_codes):
descriptor = resource["_source"][descriptor_type]
result = descriptor[0] if len(descriptor) > 0 else None
for language_code in language_codes:
for entry in descriptor:
if entry["language"] == language_code and entry["value"] != "":
return entry
return result

descriptor_types = ("displaydescription", "displayname")
active_and_default_language_codes = (get_language(), settings.LANGUAGE_CODE)

for resource in response_object["results"]["hits"]["hits"]:
for descriptor_type in descriptor_types:
descriptor = get_localized_descriptor(resource, descriptor_type, active_and_default_language_codes)
if descriptor:
resource["_source"][descriptor_type] = descriptor["value"]
if descriptor_type == "displayname":
resource["_source"]["displayname_language"] = descriptor["language"]
else:
resource["_source"][descriptor_type] = _("Undefined")

0 comments on commit cdc9eec

Please sign in to comment.