in components/webui/src/dpu/api.py [0:0]
def _document_to_dict(doc: Document) -> Optional[dict]:
def to_proto(value):
return Struct(
fields={k: v for k, v in value.items()},
)
def struct_data_to_dict(struct_data) -> Dict:
if type(struct_data).__name__ == "MapComposite":
return MessageToDict(to_proto(struct_data.pb))
return MessageToDict(struct_data)
odoc: Dict[str, Any] = {
"id": doc.id,
"name": doc.name,
}
# Load metadata (from json_data or struct_data)
if doc.json_data:
metadata = json.loads(doc.json_data)
odoc["metadata"] = json.loads(doc.json_data)
else:
metadata = struct_data_to_dict(doc.struct_data)
odoc["metadata"] = metadata.get("metadata", {})
odoc["status"] = metadata.get("status", "")
odoc["objs"] = metadata.get("objs", [])
# Load derived data if available
if doc.derived_struct_data:
doc_info = struct_data_to_dict(doc.derived_struct_data)
odoc["content"] = [
snippet.get("snippet")
for snippet in doc_info.get("snippets", [])
if snippet.get("snippet") is not None
]
odoc["title"] = doc_info.get("title")
odoc["uri"] = doc_info.get("link")
# Otherwise just load normal content
elif doc.content:
odoc["uri"] = doc.content.uri
return odoc