예제 #1
0
    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())
예제 #2
0
	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())
예제 #3
0
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)
예제 #4
0
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)
예제 #5
0
파일: ddd.py 프로젝트: strinking/ddd
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)
예제 #6
0
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})
예제 #7
0
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))
예제 #8
0
파일: ddd.py 프로젝트: strinking/ddd
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)
예제 #9
0
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))
예제 #10
0
파일: ddd.py 프로젝트: strinking/ddd
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})
예제 #11
0
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)