From 5bbb5c4734d053c0bfa95f1954946d8f82251acb Mon Sep 17 00:00:00 2001 From: Jacob Walls Date: Wed, 20 Nov 2024 10:37:13 -0500 Subject: [PATCH] Update backend services for nonlocalized string model changes --- arches_lingo/migrations/0001_initial.py | 3 +-- .../migrations/0002_load_lingo_lists.py | 4 +++- arches_lingo/utils/concept_builder.py | 14 +++----------- tests/tests.py | 18 +++++++----------- 4 files changed, 14 insertions(+), 25 deletions(-) diff --git a/arches_lingo/migrations/0001_initial.py b/arches_lingo/migrations/0001_initial.py index 52dc9f24..96563d1e 100644 --- a/arches_lingo/migrations/0001_initial.py +++ b/arches_lingo/migrations/0001_initial.py @@ -23,8 +23,7 @@ class Migration(migrations.Migration): CREATE VIEW arches_lingo__vw_label_values AS ( SELECT t.resourceinstanceid AS conceptid, - ROW_TO_JSON(JSONB_EACH(t.tiledata -> '{CONCEPT_NAME_CONTENT_NODE}')) - -> 'value' ->> 'value' AS value + t.tiledata ->> '{CONCEPT_NAME_CONTENT_NODE}' AS value FROM tiles t ORDER BY diff --git a/arches_lingo/migrations/0002_load_lingo_lists.py b/arches_lingo/migrations/0002_load_lingo_lists.py index 1e67c6e8..7748d257 100644 --- a/arches_lingo/migrations/0002_load_lingo_lists.py +++ b/arches_lingo/migrations/0002_load_lingo_lists.py @@ -1,8 +1,9 @@ +import io import os + from django.db import migrations from django.core import management from arches_lingo.settings import APP_ROOT -from arches_references.models import List, ListItem, ListItemValue class Migration(migrations.Migration): @@ -22,6 +23,7 @@ def load_lists(apps, schema_editor): "controlled_lists", "lingo_lists.json", ), + stdout=io.StringIO(), ) operations = [ diff --git a/arches_lingo/utils/concept_builder.py b/arches_lingo/utils/concept_builder.py index 231dae34..8c19deab 100644 --- a/arches_lingo/utils/concept_builder.py +++ b/arches_lingo/utils/concept_builder.py @@ -4,7 +4,7 @@ from django.core.cache import caches from django.db.models import CharField, F, OuterRef, Value from django.db.models.expressions import CombinedExpression -from django.utils.translation import gettext_lazy as _ +from django.utils.translation import gettext as _ from arches.app.models.models import ResourceInstance, TileModel @@ -163,11 +163,7 @@ def serialize_scheme(self, scheme: ResourceInstance, *, children=True): def serialize_scheme_label(self, label_tile: dict): valuetype_id = label_tile[SCHEME_NAME_TYPE_NODE][0]["labels"][0]["value"] language_id = label_tile[SCHEME_NAME_LANGUAGE_NODE][0]["labels"][0]["value"] - localized_string_objs = label_tile[SCHEME_NAME_CONTENT_NODE].values() - try: - value = next(iter(localized_string_objs))["value"] - except (StopIteration, KeyError): - value = "Unknown" + value = label_tile[SCHEME_NAME_CONTENT_NODE] or _("Unknown") return { "valuetype_id": valuetype_id, "language_id": language_id, @@ -223,11 +219,7 @@ def add_broader_concept_recursive(self, working_parent_list, conceptid): def serialize_concept_label(self, label_tile: dict): valuetype_id = label_tile[CONCEPT_NAME_TYPE_NODE][0]["labels"][0]["value"] language_id = label_tile[CONCEPT_NAME_LANGUAGE_NODE][0]["labels"][0]["value"] - localized_string_objs = label_tile[CONCEPT_NAME_CONTENT_NODE].values() - try: - value = next(iter(localized_string_objs))["value"] - except (StopIteration, KeyError): - value = "Unknown" + value = label_tile[CONCEPT_NAME_CONTENT_NODE] or _("Unknown") return { "valuetype_id": valuetype_id, "language_id": language_id, diff --git a/tests/tests.py b/tests/tests.py index 9808e303..0d33627f 100644 --- a/tests/tests.py +++ b/tests/tests.py @@ -36,10 +36,6 @@ ) -def localized_string(text, language="en", direction="ltr"): - return {language: {"value": text, "direction": direction}} - - class ViewTests(TestCase): @classmethod def mock_concept_and_scheme_graphs(cls): @@ -75,8 +71,8 @@ def mock_concept_and_scheme_graphs(cls): SCHEME_NAME_NODEGROUP, SCHEME_NAME_CONTENT_NODE, "appellative_status_ascribed_name_content", - "string", - {"en": ""}, + "non-localized-string", + {}, ), ( SCHEME_NAME_NODEGROUP, @@ -89,8 +85,8 @@ def mock_concept_and_scheme_graphs(cls): CONCEPT_NAME_NODEGROUP, CONCEPT_NAME_CONTENT_NODE, "appellative_status_ascribed_name_content", - "string", - {"en": ""}, + "non-localized-string", + {}, ), ( CONCEPT_NAME_NODEGROUP, @@ -111,7 +107,7 @@ def mock_concept_and_scheme_graphs(cls): istopnode=False, datatype=datatype, config=config, - isrequired=datatype == "string", + isrequired=False, ) @classmethod @@ -135,7 +131,7 @@ def setUpTestData(cls): resourceinstance=cls.scheme, nodegroup_id=SCHEME_NAME_NODEGROUP, data={ - SCHEME_NAME_CONTENT_NODE: localized_string("Test Scheme"), + SCHEME_NAME_CONTENT_NODE: "Test Scheme", SCHEME_NAME_TYPE_NODE: prefLabel_reference_dt, SCHEME_NAME_LANGUAGE_NODE: en_reference_dt, }, @@ -155,7 +151,7 @@ def setUpTestData(cls): resourceinstance=concept, nodegroup_id=CONCEPT_NAME_NODEGROUP, data={ - CONCEPT_NAME_CONTENT_NODE: localized_string(f"Concept {i + 1}"), + CONCEPT_NAME_CONTENT_NODE: f"Concept {i + 1}", CONCEPT_NAME_TYPE_NODE: prefLabel_reference_dt, CONCEPT_NAME_LANGUAGE_NODE: en_reference_dt, },