@@ -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