def upsert_comment(mongo, identifier): """ Upsert root post or comment. """ with suppress(PostDoesNotExist): p = Post(identifier) update = {'$set': strip_dot_from_keys(p.export())} if p.is_comment(): return mongo.Comments.update( {'identifier': p.identifier}, update, upsert=True) return mongo.Posts.update({'identifier': p.identifier}, update, upsert=True)
def upsert_comment(mongo, identifier): """ Upsert root post or comment. """ with suppress(PostDoesNotExist): p = Post(identifier) if p.is_comment(): return mongo.Comments.update({'identifier': p.identifier}, p.export(), upsert=True) return mongo.Posts.update({'identifier': p.identifier}, p.export(), upsert=True)
def upsert_comment_chain(mongo, identifier, recursive=False): """ Upsert given comments and its parent(s). Args: mongo: mongodb instance identifier: Post identifier recursive: (Defaults to False). Recursively update all parent comments. """ with suppress(PostDoesNotExist): p = Post(identifier) upsert_comment(mongo, p.identifier) if recursive and p.is_comment(): parent_identifier = '@%s/%s' % (p.parent_author, p.parent_permlink) upsert_comment_chain(mongo, parent_identifier, recursive)
def upsert_comment_chain(mongo, identifier, recursive=False): """ Upsert given comments and its parent(s). Args: mongo: mongodb instance identifier: Post identifier recursive: (Defaults to False). If True, recursively update all parent comments, incl. root post. """ with suppress(PostDoesNotExist): p = Post(identifier) if p.is_comment(): mongo.Comments.update({'identifier': p.identifier}, p.export(), upsert=True) parent_identifier = '@%s/%s' % (p.parent_author, p.parent_permlink) if recursive: upsert_comment_chain(mongo, parent_identifier, recursive) else: upsert_comment(mongo, parent_identifier) else: return mongo.Posts.update({'identifier': p.identifier}, p.export(), upsert=True)