def put(self, transfer_account_id): put_data = request.get_json() transfer_account_id_list = put_data.get('transfer_account_id_list') approve = put_data.get('approve') transfer_account_name = put_data.get('transfer_account_name') payable_period_type = put_data.get('payable_period_type') payable_period_length = put_data.get('payable_period_length') payable_epoch = put_data.get('payable_epoch') if transfer_account_id: transfer_account = TransferAccount.query.get(transfer_account_id) if not transfer_account: response_object = {'message': 'Transfer account not found'} return make_response(jsonify(response_object)), 400 if transfer_account_name and not transfer_account_name == transfer_account.name: transfer_account.name = transfer_account_name if payable_period_type and not payable_period_type == transfer_account.payable_period_type: transfer_account.payable_period_type = payable_period_type if payable_period_length and not payable_period_length == transfer_account.payable_period_length: transfer_account.payable_period_length = payable_period_length if payable_epoch and not payable_epoch == transfer_account.payable_epoch: transfer_account.payable_epoch = payable_epoch if not approve == transfer_account.is_approved and transfer_account.is_approved is not True: transfer_account.approve() db.session.commit() result = transfer_account_schema.dump(transfer_account) response_object = { 'message': 'Successfully Edited Transfer Account.', 'data': { 'transfer_account': result.data, } } return make_response(jsonify(response_object)), 201 else: transfer_accounts = [] response_list = [] for transfer_account_id in transfer_account_id_list: transfer_account = TransferAccount.query.get( transfer_account_id) if not transfer_account: response_list.append({ 'status': 400, 'message': 'Transfer account id {} not found'.format( transfer_account_id) }) continue if not transfer_account.is_approved and approve: transfer_account.approve() transfer_accounts.append(transfer_account) db.session.commit() response_object = { 'status': 'success', 'message': 'Successfully Edited Transfer Accounts.', 'data': { 'transfer_accounts': transfer_accounts_schema.dump(transfer_accounts).data } } return make_response(jsonify(response_object)), 201
def get(self, transfer_account_id): account_type_filter = request.args.get('account_type') result = None if transfer_account_id: transfer_account = TransferAccount.query.get(transfer_account_id) if transfer_account is None: response_object = { 'message': 'No such transfer account: {}'.format(transfer_account_id), } return make_response(jsonify(response_object)), 400 if AccessControl.has_sufficient_tier(g.user.roles, 'ADMIN', 'admin'): result = transfer_account_schema.dump(transfer_account) elif AccessControl.has_any_tier(g.user.roles, 'ADMIN'): result = view_transfer_account_schema.dump(transfer_account) response_object = { 'message': 'Successfully Loaded.', 'data': { 'transfer_account': result.data, } } return make_response(jsonify(response_object)), 201 else: search_string = request.args.get('search_string') or '' # HANDLE PARAM : params - Standard filter object. Exact same as the ones Metrics uses! encoded_filters = request.args.get('params') filters = process_transfer_filters(encoded_filters) # HANDLE PARAM : order # Valid orders types are: `ASC` and `DESC` # Default: DESC order_arg = request.args.get('order') or 'DESC' if order_arg.upper() not in ['ASC', 'DESC']: return { 'message': 'Invalid order value \'{}\'. Please use \'ASC\' or \'DESC\'' .format(order_arg) } order = asc if order_arg.upper() == 'ASC' else desc # HANDLE PARAM: sort_by # Valid orders types are: first_name, last_name, email, date_account_created, rank, balance, status # Default: rank sort_by_arg = request.args.get('sort_by') or 'rank' base_query = generate_search_query( search_string, filters, order, sort_by_arg).filter(TransferAccount.is_ghost != True) if account_type_filter == 'vendor': transfer_accounts_query = base_query.filter_by(is_vendor=True) elif account_type_filter == 'beneficiary': transfer_accounts_query = base_query.filter_by( is_beneficiary=True) else: pass # Filter Contract, Float and Organisation Transfer Accounts transfer_accounts_query = (base_query.filter( TransferAccount.account_type == TransferAccountType.USER)) transfer_accounts, total_items, total_pages, new_last_fetched = paginate_query( transfer_accounts_query) if transfer_accounts is None: response_object = { 'message': 'No transfer accounts', } return make_response(jsonify(response_object)), 400 if AccessControl.has_sufficient_tier(g.user.roles, 'ADMIN', 'admin'): result = transfer_accounts_schema.dump(transfer_accounts) elif AccessControl.has_any_tier(g.user.roles, 'ADMIN'): result = view_transfer_accounts_schema.dump(transfer_accounts) response_object = { 'message': 'Successfully Loaded.', 'items': total_items, 'pages': total_pages, 'last_fetched': new_last_fetched, 'query_time': datetime.datetime.utcnow().strftime("%m/%d/%Y, %H:%M:%S"), 'data': { 'transfer_accounts': result.data } } return make_response(json.dumps(response_object), 200)
def get(self, transfer_account_id): # can_see_full_details = role in ['is_admin', 'is_view'] # # if not (can_see_full_details): # return less_detail account_type_filter = request.args.get('account_type') result = None if transfer_account_id: transfer_account = TransferAccount.query.get(transfer_account_id) if transfer_account is None: response_object = { 'message': 'No such transfer account: {}'.format(transfer_account_id), } return make_response(jsonify(response_object)), 400 if g.user.is_admin: result = transfer_account_schema.dump(transfer_account) elif g.user.is_view: result = view_transfer_account_schema.dump(transfer_account) response_object = { 'message': 'Successfully Loaded.', 'data': { 'transfer_account': result.data, } } return make_response(jsonify(response_object)), 201 else: if account_type_filter == 'vendor': transfer_accounts_query = TransferAccount.query.filter_by( is_vendor=True) elif account_type_filter == 'beneficiary': transfer_accounts_query = TransferAccount.query.filter_by( is_vendor=False) else: transfer_accounts_query = TransferAccount.query transfer_accounts, total_items, total_pages = paginate_query( transfer_accounts_query, TransferAccount) if transfer_accounts is None: response_object = { 'message': 'No transfer accounts', } return make_response(jsonify(response_object)), 400 if g.user.is_admin: result = transfer_accounts_schema.dump(transfer_accounts) elif g.user.is_view: result = view_transfer_accounts_schema.dump(transfer_accounts) response_object = { 'message': 'Successfully Loaded.', 'items': total_items, 'pages': total_pages, 'data': { 'transfer_accounts': result.data } } return make_response(jsonify(response_object)), 201
def get(self, transfer_account_id): account_type_filter = request.args.get('account_type') result = None if transfer_account_id: transfer_account = TransferAccount.query.get(transfer_account_id) if transfer_account is None: response_object = { 'message': 'No such transfer account: {}'.format(transfer_account_id), } return make_response(jsonify(response_object)), 400 if AccessControl.has_sufficient_tier(g.user.roles, 'ADMIN', 'admin'): result = transfer_account_schema.dump(transfer_account) elif AccessControl.has_any_tier(g.user.roles, 'ADMIN'): result = view_transfer_account_schema.dump(transfer_account) response_object = { 'message': 'Successfully Loaded.', 'data': { 'transfer_account': result.data, } } return make_response(jsonify(response_object)), 201 else: base_query = TransferAccount.query.filter( TransferAccount.is_ghost != True) if account_type_filter == 'vendor': transfer_accounts_query = base_query.filter_by(is_vendor=True) elif account_type_filter == 'beneficiary': transfer_accounts_query = base_query.filter_by( is_beneficiary=True) else: pass # Filter Contract, Float and Organisation Transfer Accounts transfer_accounts_query = (base_query.filter( TransferAccount.account_type == TransferAccountType.USER)) transfer_accounts, total_items, total_pages, new_last_fetched = paginate_query( transfer_accounts_query) if transfer_accounts is None: response_object = { 'message': 'No transfer accounts', } return make_response(jsonify(response_object)), 400 if AccessControl.has_sufficient_tier(g.user.roles, 'ADMIN', 'admin'): result = transfer_accounts_schema.dump(transfer_accounts) elif AccessControl.has_any_tier(g.user.roles, 'ADMIN'): result = view_transfer_accounts_schema.dump(transfer_accounts) response_object = { 'message': 'Successfully Loaded.', 'items': total_items, 'pages': total_pages, 'last_fetched': new_last_fetched, 'query_time': datetime.datetime.utcnow().strftime("%m/%d/%Y, %H:%M:%S"), 'data': { 'transfer_accounts': result.data } } return make_response(json.dumps(response_object), 200)