From ceeba0e89a25c87ef27f40b7aa6bc63dfa712572 Mon Sep 17 00:00:00 2001 From: diminator Date: Wed, 11 Jan 2017 13:45:47 +0100 Subject: [PATCH] logical xor & status flag --- bigchaindb/web/views/statuses.py | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/bigchaindb/web/views/statuses.py b/bigchaindb/web/views/statuses.py index 8ded2f29..06b768e6 100644 --- a/bigchaindb/web/views/statuses.py +++ b/bigchaindb/web/views/statuses.py @@ -23,25 +23,25 @@ class StatusApi(Resource): parser.add_argument('block_id', type=str) args = parser.parse_args(strict=True) + tx_id = args['tx_id'] + block_id = args['block_id'] - if sum(arg is not None for arg in args.values()) != 1: + # logical xor - exactly one query argument required + if bool(tx_id) == bool(block_id): return make_error(400, "Provide exactly one query parameter. Choices are: block_id, tx_id") pool = current_app.config['bigchain_pool'] status, links = None, None with pool() as bigchain: - if args['tx_id']: - status = bigchain.get_status(args['tx_id']) + if tx_id: + status = bigchain.get_status(tx_id) links = { - "tx": "/transactions/{}".format(args['tx_id']) + "tx": "/transactions/{}".format(tx_id) } - elif args['block_id']: - block = bigchain.get_block(block_id=args['block_id']) - if not block: - return make_error(404) - status = bigchain.block_election_status(block['id'], block['block']['voters']) + elif block_id: + _, status = bigchain.get_block(block_id=block_id, include_status=True) # TODO: enable once blocks endpoint is available # links = { # "block": "/blocks/{}".format(args['block_id'])