def on_revision_by_id(self, request, rid): result = super().on_revision_by_id(request, rid) result.refs = refs = Record() refs.branch = self.build_url(request, "branches.branch_by_id", bid=result.rid.branch) refs.ancestors = Record() for number, rid in enumerate(result.ancestors): refs.ancestors[number] = self.build_url(request, "revisions.revision_by_id", rid=rid) refs.nodes = Record() for number, node_ref in enumerate(result.nodes): refs.nodes[number] = self.build_url(request, "nodes.by_uid", uid=NodeId( node_ref, result.rid)) refs.nodes_refs = Record() for number, (ref, rid) in enumerate(result.nodes_refs.items()): refs.nodes_refs[number] = self.build_url(request, "nodes.by_uid", uid=NodeId( ref, result.rid)) return result
def inspect(self, request, revision, value): if isinstance(value, NodeRef): uid = NodeId(value, revision.search(value).id) return self.build_url(request, "nodes.by_uid", uid=uid) elif isinstance(value, tuple): result = Record() for number, subvalue in enumerate(value): subinspect = self.inspect(request, revision, subvalue) if subinspect is not None: result[number] = subinspect if result: return result elif isinstance(value, ReadOnlyDict): result = Record() for name, subvalue in value.items(): subinspect = self.inspect(request, revision, subvalue) if subinspect is not None: result[name] = subinspect if result: return result