Skip to content

Commit 8583770

Browse files
committed
fix: Add page path to node attributes
1 parent eb3d4c9 commit 8583770

File tree

2 files changed

+7
-13
lines changed

2 files changed

+7
-13
lines changed

djangocms_rest/cms_config.py

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -28,11 +28,7 @@ def get_page_api_endpoint(page, language=None, fallback=True):
2828
if page.is_home:
2929
return reverse("page-root", kwargs={"language": language})
3030
path = page.get_path(language, fallback)
31-
return (
32-
reverse("page-detail", kwargs={"language": language, "path": path})
33-
if path
34-
else None
35-
)
31+
return reverse("page-detail", kwargs={"language": language, "path": path}) if path else None
3632
except NoReverseMatch:
3733
return None
3834

@@ -51,6 +47,10 @@ def inner(self, page_content: PageContent, *args, **kwargs):
5147
page_content.page,
5248
page_content.language,
5349
)
50+
# To save API calls, we add the page's path to the node attributes
51+
node.attr["path"] = page_content.page.get_path(
52+
page_content.language,
53+
)
5454
return node
5555

5656
return inner
@@ -59,9 +59,7 @@ def inner(self, page_content: PageContent, *args, **kwargs):
5959
def patch_page_menu(menu: type[CMSMenu]):
6060
"""Patch the CMSMenu to use the REST API endpoint for pages."""
6161
if hasattr(menu, "get_menu_node_for_page_content"):
62-
menu.get_menu_node_for_page_content = patch_get_menu_node_for_page_content(
63-
menu.get_menu_node_for_page_content
64-
)
62+
menu.get_menu_node_for_page_content = patch_get_menu_node_for_page_content(menu.get_menu_node_for_page_content)
6563

6664

6765
class NavigationNodeMixin:
@@ -101,9 +99,7 @@ class RESTToolbarMixin:
10199
def __init__(self, *args, **kwargs):
102100
super().__init__(*args, **kwargs)
103101

104-
if getattr(
105-
settings, "REST_JSON_RENDERING", not getattr(settings, "CMS_TEMPLATES", False)
106-
):
102+
if getattr(settings, "REST_JSON_RENDERING", not getattr(settings, "CMS_TEMPLATES", False)):
107103
try:
108104
from djangocms_text import settings
109105

djangocms_rest/serializers/menus.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ class NavigationNodeSerializer(serializers.Serializer):
99
namespace = serializers.CharField(allow_null=True)
1010
title = serializers.CharField()
1111
url = serializers.URLField(allow_null=True)
12-
path = serializers.CharField(allow_null=True)
1312
api_endpoint = serializers.URLField(allow_null=True)
1413
visible = serializers.BooleanField()
1514
selected = serializers.BooleanField()
@@ -40,7 +39,6 @@ def to_representation(self, obj: NavigationNode) -> dict:
4039
"title": obj.title,
4140
"url": get_absolute_frontend_url(self.request, obj.url) or "",
4241
"api_endpoint": api_endpoint,
43-
"path": path,
4442
"visible": obj.visible,
4543
"selected": obj.selected or obj.attr.get("is_home", False) and getattr(self.request, "is_home", False),
4644
"attr": obj.attr,

0 commit comments

Comments
 (0)