-
Notifications
You must be signed in to change notification settings - Fork 145
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
moves localize_descriptors logic into own search_component, LocalizeR…
…esultDescriptors, re #10804
- Loading branch information
1 parent
138e6dd
commit cdc9eec
Showing
1 changed file
with
31 additions
and
0 deletions.
There are no files selected for viewing
31 changes: 31 additions & 0 deletions
31
arches/app/search/components/localize_result_descriptors.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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") |