Skip to content

Commit

Permalink
changed data structure
Browse files Browse the repository at this point in the history
  • Loading branch information
cekk committed Jun 27, 2024
1 parent f1dca6f commit 99070d4
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 30 deletions.
45 changes: 18 additions & 27 deletions src/collective/volto/sitesettings/restapi/services/site/get.py
Original file line number Diff line number Diff line change
Expand Up @@ -36,18 +36,13 @@ def __call__(self, expand=False):
check=False,
)
# set title and subtitle based on language, if field is set
site_title_translated = self.get_value_from_registry(
additional_settings, "site_title_translated"
)
site_subtitle = self.get_value_from_registry(
additional_settings, "site_subtitle"
)
title = {"default": result["site"]["plone.site_title"]}
title.update(self.json_to_dict(additional_settings, "site_title_translated"))

result["site"]["plone.site_title"] = (
self.get_translated_value(site_title_translated)
or result["site"]["plone.site_title"] # noqa
)
result["site"]["plone.site_subtitle"] = self.get_translated_value(site_subtitle)
site_subtitle = self.json_to_dict(additional_settings, "site_subtitle")

result["site"]["plone.site_title"] = title
result["site"]["plone.site_subtitle"] = site_subtitle

# images
site_url = api.portal.get().absolute_url()
Expand All @@ -62,12 +57,12 @@ def __call__(self, expand=False):
result["site"][f"plone.{field}"][
"url"
] = f"{site_url}/registry-images/@@images/{field}/{filename}"
result["site"][f"plone.{field}"][
"width"
] = self.get_value_from_registry(additional_settings, f"{field}_width")
result["site"][f"plone.{field}"][
"height"
] = self.get_value_from_registry(additional_settings, f"{field}_height")
result["site"][f"plone.{field}"]["width"] = (
self.get_value_from_registry(additional_settings, f"{field}_width")
)
result["site"][f"plone.{field}"]["height"] = (
self.get_value_from_registry(additional_settings, f"{field}_height")
)

return result

Expand All @@ -77,19 +72,15 @@ def get_value_from_registry(self, registry, field):
except KeyError:
return ""

def get_translated_value(self, field_value):
"""
If set, return the value for current language.
"""
if not field_value:
return ""
def json_to_dict(self, registry, field):
data = self.get_value_from_registry(registry=registry, field=field)
if not data:
return {}
try:
value = json.loads(field_value)
return json.loads(data)
except (JSONDecodeError, TypeError) as e:
logger.exception(e)
return ""
lang = api.portal.get_current_language()
return value.get(lang, "")
return {}


class SiteGet(BaseSiteGet):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ def test_endpoint_return_site_title_based_on_language_if_set(self):
)
commit()
resp = self.api_session.get("/@site").json()
self.assertEqual(resp["plone.site_title"], "Site custom name")
self.assertEqual(resp["plone.site_title"], {"default": "Site custom name"})

# now try to add some localizations
self.api_session.patch(
Expand All @@ -91,7 +91,10 @@ def test_endpoint_return_site_title_based_on_language_if_set(self):
commit()

resp = self.api_session.get("/@site").json()
self.assertEqual(resp["plone.site_title"], "Localized title")
self.assertEqual(
resp["plone.site_title"],
{"default": "Site custom name", "en": "Localized title"},
)

def test_endpoint_return_site_subtitle_based_on_language_if_set(self):
self.api_session.patch(
Expand All @@ -102,7 +105,7 @@ def test_endpoint_return_site_subtitle_based_on_language_if_set(self):
)
commit()
resp = self.api_session.get("/@site").json()
self.assertEqual(resp["plone.site_subtitle"], "Site subtitle")
self.assertEqual(resp["plone.site_subtitle"], {"en": "Site subtitle"})

def test_endpoint_store_logo_dimensions_if_saved(self):
image_file = os.path.join(os.path.dirname(__file__), "logo.png")
Expand Down

0 comments on commit 99070d4

Please sign in to comment.