def test_json(self): r = Response.json(None) self.assertEqual(next(r.body), b"null") big_obj = ["a" * 256] * 256 r = Response.json(big_obj) chunks = list(r.body) self.assertGreater(len(chunks), 1) Response.json_encoder = json.JSONEncoder() r = Response.json(big_obj) chunks = list(r.body) self.assertGreater(len(chunks), 1) self.assertEqual(b"".join(chunks), json.dumps(big_obj).encode())
def test_json(self): r = Response.json(None) self.assertEqual(next(r.body), b'null') self.assertEqual(HTTPHeaders(r.headers)['Content-Type'], 'application/json; charset=utf-8') big_obj = ['a' * 256] * 256 r = Response.json(big_obj) chunks = list(r.body) self.assertGreater(len(chunks), 1) Response.json_encoder = json.JSONEncoder() r = Response.json(big_obj) chunks = list(r.body) self.assertGreater(len(chunks), 1) self.assertEqual(b''.join(chunks), json.dumps(big_obj).encode())
def accounts_update(request, user_id): item = db.PlaidItem.query.get(int(request.body['plaid_item_id'])) if item.user_id != user_id: return Response(code=403) item.name = request.body['name'] or None db.session.commit() return Response.json(True)
def plaid_access_token(request, user_id): item_id, access_token = plaid.exchange_token(request.body['public_token']) db.session.add( db.PlaidItem(user_id=user_id, item_id=item_id, access_token=access_token)) db.session.commit() return Response.json(None)
def by_hour(request, guild_id): session = Session() query = session.query(Messages) \ .with_entities(func.strftime('%H', Messages.hour, 'unixepoch').label('agg_hour'), func.sum(Messages.count).label('count')) \ .group_by('agg_hour').order_by('agg_hour') query = _filter(query, int(guild_id), request.query) data = [] for row in query: data.append({'hour': row.agg_hour, 'count': row.count}) return Response.json(data)
def channel_user_month_list(request, guild_id): session = Session() channels = [] for row in session.query(Channels).filter(Channels.guild_id == guild_id).order_by(Channels.name): channels.append({'id': str(row.channel_id), 'name': row.name}) users = [] for row in session.query(Users).order_by(Users.name): users.append({'id': str(row.int_user_id), 'name': row.name}) months = [] for row in session.query(Months).order_by(Months.month): months.append(row.month) return Response.json({'channels': channels, 'users': users, 'months': months})
def transaction_info(request, user_id): days = int(request.query['days']) plaid_transactions = db.PlaidTransaction.query \ .join(db.PlaidTransaction.account) \ .join(db.PlaidAccount.item) \ .filter(db.PlaidItem.user_id == user_id) \ .options(joinedload(db.PlaidTransaction.category), joinedload(db.PlaidTransaction.account)) \ .order_by(db.PlaidTransaction.date) \ .all() plaid_accounts = db.PlaidAccount.query \ .join(db.PlaidAccount.item) \ .filter(db.PlaidItem.user_id == user_id) \ .order_by(db.PlaidItem.plaid_item_id) \ .options(joinedload(db.PlaidAccount.item)) \ .all() return Response.json( info.transaction_info(plaid_transactions, plaid_accounts, days))
def by_channel(request, guild_id): session = Session() query = session.query(func.sum(Messages.count)) total = _filter(query, int(guild_id), request.query).scalar() query = session.query(Messages) \ .with_entities(Messages.channel_id, Channels.name, func.sum(Messages.count).label('count')) \ .outerjoin(Channels, Messages.channel_id == Channels.channel_id) \ .group_by(Channels.channel_id).order_by(func.sum(Messages.count).desc()) query = _filter(query, int(guild_id), request.query) data = [] for row in query: data.append({ 'name': row.name or str(row.channel_id), 'count': row.count, 'percentage': float('%.2f' % (row.count / total * 100)), }) return Response.json(data)
def transaction_info_demo(request): days = int(request.query['days']) fake_transactions, fake_accounts = demo_transactions.data() return Response.json( info.transaction_info(fake_transactions, fake_accounts, days))
def markov_line(request, guild_id): guild_id = int(guild_id) line = markov_models[guild_id].make_short_sentence(150) username = random.choice(usernames[guild_id]) return Response.json({'username': username, 'line': line})
def plaid_link_token(request, user_id): item = db.PlaidItem.query.get(int(request.body['plaid_item_id'])) if item.user_id != user_id: return Response(code=403) link_token = plaid.link_token(user_id, item.access_token) return Response.json(link_token)