def update_accounts(accounts=None, users=None, exchanges=None, collections=None): """ 批量更新账号信息 """ logging.basicConfig(level=logging.ERROR, format='[%(asctime)s] %(name)s' '<%(levelname)s> %(message)s') cond = {} if accounts: assert isinstance(accounts, list) cond['_id'] = {'$in': accounts} if users: assert isinstance(users, list) cond['user'] = {'$in': users} if exchanges: assert isinstance(exchanges, list) cond['exchange'] = {'$in': exchanges} if collections: assert isinstance(collections, list) cond['collections'] = {'$in': collections} accounts = list(Account.query(cond)) random.shuffle(accounts) for account in accounts: executor.submit(update_account, account) executor.shutdown() update_users() update_exchanges() update_collections()
def update_exchange(exchange): """ 更新交易所的账号信息 """ accounts = list(Account.query({'exchange': exchange})) e = Exchange.query_one({'_id': exchange}) for key, value in accounts_summary(accounts).items(): setattr(e, key, value) e.num_users = len(set(a.user for a in accounts)) e.num_accounts = len(accounts) e.upsert()
def update_user(user): """ 更新用户的账号信息 """ accounts = list(Account.query({'user': user})) u = User.query_one({'_id': user}) for key, value in accounts_summary(accounts).items(): setattr(u, key, value) u.num_accounts = len(accounts) u.num_exchanges = len(set(a.exchange for a in accounts)) u.upsert()
def check_accounts(): logging.basicConfig(level=logging.ERROR, format='[%(asctime)s] %(name)s' '<%(levelname)s> %(message)s') def check_account(account): print('检查账号{}_{}'.format(account.exchange, account.login_name)) try: Trader(account.exchange, account.login_name, account.login_password) except: pass accounts = list(Account.query()) random.shuffle(accounts) for account in accounts: executor.submit(check_account, account)
def update_collection(collection): """ 更新藏品的账号信息 """ accounts = list(Account.query({'collections': collection})) users = set() exchange, symbol = collection.split('_') name = '' quantity = 0 buy_price = 0 for account in accounts: users.add(account.user) summary = accounts_summary(accounts) for p in summary['position']: if collection.endswith(p.symbol): quantity = p.quantity buy_price = p.average_price name = p.name break users = list(users) c = Collection.query_one({'_id': collection}) if not c: c = Collection({'_id': collection}) if exchange: c.exchange = exchange if symbol: c.symbol = symbol if name: c.name = name c.users = users or [] c.accounts = [a._id for a in accounts] or [] c.quantity = quantity c.buy_price = buy_price try: c.upsert() except: pass
def admin_account(): users = list(User.query()) accounts = list(Account.query()) locals()['exchanges'] = exchanges return render_template('admin/account.html', **locals())