def _condenser_account_object(row): """Convert an internal account record into legacy-steemd style.""" return { 'name': row['name'], 'created': str(row['created_at']), 'post_count': row['post_count'], 'reputation': rep_to_raw(row['reputation']), 'net_vesting_shares': row['vote_weight'], 'transfer_history': [], 'json_metadata': json.dumps({ 'profile': { 'name': row['display_name'], 'about': row['about'], 'website': row['website'], 'location': row['location'], 'cover_image': row['cover_image'], 'profile_image': row['profile_image'], } }) }
async def get_account_reputations(db, account_lower_bound, limit): """Enumerate account reputations.""" seek = '' if account_lower_bound: seek = "WHERE name >= :start" sql = """SELECT name, reputation FROM hive_accounts %s ORDER BY name LIMIT :limit""" % seek rows = await db.query_all(sql, start=account_lower_bound, limit=limit) return [dict(name=r[0], reputation=rep_to_raw(r[1])) for r in rows]
def _hydrate_active_votes(vote_csv): """Convert minimal CSV representation into steemd-style object.""" if not vote_csv: return [] votes = [] for line in vote_csv.split("\n"): voter, rshares, percent, reputation = line.split(',') votes.append( dict(voter=voter, rshares=rshares, percent=percent, reputation=rep_to_raw(reputation))) return votes
def _condenser_post_object(row, truncate_body=0): """Given a hive_posts_cache row, create a legacy-style post object.""" paid = row['is_paidout'] post = {} post['post_id'] = row['post_id'] post['author'] = row['author'] post['permlink'] = row['permlink'] post['category'] = row['category'] post['title'] = row['title'] post['body'] = row['body'][0:truncate_body] if truncate_body else row[ 'body'] post['json_metadata'] = row['json'] post['created'] = _json_date(row['created_at']) post['last_update'] = _json_date(row['updated_at']) post['depth'] = row['depth'] post['children'] = row['children'] post['net_rshares'] = row['rshares'] post['last_payout'] = _json_date(row['payout_at'] if paid else None) post['cashout_time'] = _json_date(None if paid else row['payout_at']) post['total_payout_value'] = _amount(row['payout'] if paid else 0) post['curator_payout_value'] = _amount(0) post['pending_payout_value'] = _amount(0 if paid else row['payout']) post['promoted'] = "%.3f SBD" % row['promoted'] post['replies'] = [] post['body_length'] = len(row['body']) post['active_votes'] = _hydrate_active_votes(row['votes']) post['author_reputation'] = rep_to_raw(row['author_rep']) # import fields from legacy object assert row['raw_json'] assert len(row['raw_json']) > 32 raw_json = json.loads(row['raw_json']) if row['depth'] > 0: post['parent_author'] = raw_json['parent_author'] post['parent_permlink'] = raw_json['parent_permlink'] else: post['parent_author'] = '' post['parent_permlink'] = row['category'] post['url'] = raw_json['url'] post['root_title'] = raw_json['root_title'] post['beneficiaries'] = raw_json['beneficiaries'] post['max_accepted_payout'] = raw_json['max_accepted_payout'] post['percent_steem_dollars'] = raw_json['percent_steem_dollars'] if paid: curator_payout = sbd_amount(raw_json['curator_payout_value']) post['curator_payout_value'] = _amount(curator_payout) post['total_payout_value'] = _amount(row['payout'] - curator_payout) # not used by condenser, but may be useful #post['net_votes'] = post['total_votes'] - row['up_votes'] #post['allow_replies'] = raw_json['allow_replies'] #post['allow_votes'] = raw_json['allow_votes'] #post['allow_curation_rewards'] = raw_json['allow_curation_rewards'] return post