def serialize_node_for_page(content: Content, context: Context): if content.type in (ContentType.Page, ContentType.File) : data_container = content # The following properties are overriden by revision values if content.revision_to_serialize>0: for revision in content.revisions: if revision.revision_id==content.revision_to_serialize: data_container = revision break result = DictLikeClass( id=content.content_id, parent=context.toDict(content.parent), workspace=context.toDict(content.workspace), type=content.type, is_new=content.has_new_information_for(context.get_user()), content=data_container.description, created=data_container.created, label=data_container.label, icon=ContentType.get_icon(content.type), owner=context.toDict(data_container.owner), status=context.toDict(data_container.get_status()), links=context.toDict(content.extract_links_from_content(data_container.description)), revisions=context.toDict(sorted(content.revisions, key=lambda v: v.created, reverse=True)), selected_revision='latest' if content.revision_to_serialize<=0 else content.revision_to_serialize, history=Context(CTX.CONTENT_HISTORY).toDict(content.get_history()), urls = context.toDict({ 'mark_read': context.url(Content.format_path('/workspaces/{wid}/folders/{fid}/{ctype}s/{cid}/put_read', content)), 'mark_unread': context.url(Content.format_path('/workspaces/{wid}/folders/{fid}/{ctype}s/{cid}/put_unread', content)) }) ) if content.type==ContentType.File: result.label = content.label if content.label else content.file_name result['file'] = DictLikeClass( name = data_container.file_name, size = len(data_container.file_content), mimetype = data_container.file_mimetype) return result if content.type==ContentType.Folder: value = DictLikeClass( id=content.content_id, label=content.label, is_new=content.has_new_information_for(context.get_user()), ) return value raise NotImplementedError
def serialize_node_for_page(item: Content, context: Context): if item.type==ContentType.Thread: return DictLikeClass( content = item.description, created = item.created, icon = ContentType.get_icon(item.type), id = item.content_id, label = item.label, links = context.toDict(item.extract_links_from_content(item.description)), owner = context.toDict(item.owner), parent = context.toDict(item.parent), selected_revision = 'latest', status = context.toDict(item.get_status()), type = item.type, workspace = context.toDict(item.workspace), comments = reversed(context.toDict(item.get_comments())), is_new=item.has_new_information_for(context.get_user()), history = Context(CTX.CONTENT_HISTORY).toDict(item.get_history()), urls = context.toDict({ 'mark_read': context.url(Content.format_path('/workspaces/{wid}/folders/{fid}/{ctype}s/{cid}/put_read', item)), 'mark_unread': context.url(Content.format_path('/workspaces/{wid}/folders/{fid}/{ctype}s/{cid}/put_unread', item)) }), ) if item.type==ContentType.Comment: return DictLikeClass( is_new=item.has_new_information_for(context.get_user()), content = item.description, created = item.created, created_as_delta = item.created_as_delta(), icon = ContentType.get_icon(item.type), id = item.content_id, label = item.label, owner = context.toDict(item.owner), # REMOVE parent = context.toDict(item.parent), type = item.type, urls = context.toDict({ 'delete': context.url('/workspaces/{wid}/folders/{fid}/{ctype}/{cid}/comments/{commentid}/put_delete'.format(wid = item.workspace_id, fid=item.parent.parent_id, ctype=item.parent.type+'s', cid=item.parent.content_id, commentid=item.content_id)) }) ) if item.type==ContentType.Folder: return Context(CTX.DEFAULT).toDict(item)