Skip to content

Commit 67c83fa

Browse files
authored
feat: Add path field to menu endpoints to allow for simpler endpoint construction (#65)
1 parent 98eaa14 commit 67c83fa

File tree

1 file changed

+6
-10
lines changed

1 file changed

+6
-10
lines changed

djangocms_rest/serializers/menus.py

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ 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)
1213
api_endpoint = serializers.URLField(allow_null=True)
1314
visible = serializers.BooleanField()
1415
selected = serializers.BooleanField()
@@ -22,24 +23,19 @@ def __init__(self, *args, **kwargs):
2223

2324
def get_children(self, obj: NavigationNode) -> list[dict]:
2425
# Assuming obj.children is a list of NavigationNode-like objects
25-
serializer = NavigationNodeSerializer(
26-
obj.children or [], many=True, context=self.context
27-
)
26+
serializer = NavigationNodeSerializer(obj.children or [], many=True, context=self.context)
2827
return serializer.data
2928

3029
def to_representation(self, obj: NavigationNode) -> dict:
3130
"""Customize the base representation of the NavigationNode."""
3231
return {
3332
"namespace": getattr(obj, "namespace", None),
3433
"title": obj.title,
35-
"url": get_absolute_frontend_url(self.request, obj.url),
36-
"api_endpoint": get_absolute_frontend_url(
37-
self.request, getattr(obj, "api_endpoint", None)
38-
),
34+
"url": get_absolute_frontend_url(self.request, obj.url) or "",
35+
"api_endpoint": get_absolute_frontend_url(self.request, getattr(obj, "api_endpoint", None)) or "",
36+
"path": getattr(obj, "api_endpoint", ""),
3937
"visible": obj.visible,
40-
"selected": obj.selected
41-
or obj.attr.get("is_home", False)
42-
and getattr(self.request, "is_home", False),
38+
"selected": obj.selected or obj.attr.get("is_home", False) and getattr(self.request, "is_home", False),
4339
"attr": obj.attr,
4440
"level": obj.level,
4541
"children": self.get_children(obj),

0 commit comments

Comments
 (0)