def list_by_parent(cls, parent_key, request):

        topic_list = []
        topic_edge_list = Edge.list(
            start_node=parent_key,
            kind='topics',
            limit=request.topics.limit,
            pageToken=request.topics.pageToken
        )
        for edge in topic_edge_list['items']:
            end_node = edge.end_node.get()
            try:
                excerpt = end_node.content[0:100]
            except:
                excerpt = ''
            last_updater = end_node.author

            if edge.end_node.kind() == 'Note':

                if end_node.comments == 0:

                    last_updater = end_node.author
                    excerpt = None
                    if end_node.content:
                        excerpt = end_node.content[0:100]

                else:

                    # get the last comment
                    comments_edge_list = Edge.list(
                        start_node=end_node.key,
                        kind='comments',
                        limit=1
                    )
                    if len(comments_edge_list['items']) > 0:
                        last_comment = comments_edge_list['items'][0].end_node.get()
                        last_updater = last_comment.author
                        excerpt = None
                        if last_comment.content:
                            excerpt = end_node.content[0:100]
            else:
                # get the last comment
                comments_edge_list = Edge.list(
                    start_node=end_node.key,
                    kind='comments',
                    limit=1
                )
                if len(comments_edge_list['items']) > 0:
                    last_comment = comments_edge_list['items'][0].end_node.get()
                    last_updater = last_comment.author
                    excerpt = None
                    if last_comment.content:
                        excerpt = end_node.content[0:100]

            author = AuthorSchema(
                google_user_id=last_updater.google_user_id,
                display_name=last_updater.display_name,
                google_public_profile_url=last_updater.google_public_profile_url,
                photo=last_updater.photo
            )

            topic_list.append(
                TopicSchema(
                    id=str(end_node.key.id()),
                    last_updater=author,
                    title=edge.end_node.get().title,
                    excerpt=excerpt,
                    topic_kind=end_node.key.kind(),
                    updated_at=end_node.updated_at.strftime(
                        "%Y-%m-%dT%H:%M:00.000"
                    )
                )
            )
        if topic_edge_list['next_curs'] and topic_edge_list['more']:
            topic_next_curs = topic_edge_list['next_curs'].urlsafe()
        else:
            topic_next_curs = None
        return TopicListResponse(
            items=topic_list,
            nextPageToken=topic_next_curs
        )