def has_admin_role(self): return AccessControl.has_any_tier(self.roles, 'ADMIN')
def has_vendor_role(self): return AccessControl.has_any_tier(self.roles, 'VENDOR')
def has_group_account_role(self): return AccessControl.has_any_tier(self.roles, 'GROUP_ACCOUNT')
def has_token_agent_role(self): return AccessControl.has_any_tier(self.roles, 'TOKEN_AGENT')
def has_beneficiary_role(self): return AccessControl.has_any_tier(self.roles, 'BENEFICIARY')
def get(self, credit_transfer_id): transfer_account_ids = request.args.get('transfer_account_ids') transfer_type = request.args.get('transfer_type', 'ALL') get_transfer_stats = False transfer_list = None if transfer_type: transfer_type = transfer_type.upper() if credit_transfer_id: credit_transfer = CreditTransfer.query.get(credit_transfer_id) if credit_transfer is None: return make_response( jsonify({'message': 'Credit transfer not found'})), 404 if AccessControl.has_sufficient_tier(g.user.roles, 'ADMIN', 'admin'): transfer_list = credit_transfers_schema.dump([credit_transfer ]).data elif AccessControl.has_any_tier(g.user.roles, 'ADMIN'): transfer_list = view_credit_transfers_schema.dump( [credit_transfer]).data transfer_stats = [] response_object = { 'status': 'success', 'message': 'Successfully Loaded.', 'data': { 'credit_transfer': transfer_list, 'transfer_stats': transfer_stats } } return make_response(jsonify(response_object)), 200 else: query = CreditTransfer.query transfer_list = None if transfer_type != 'ALL': try: transfer_type_enum = TransferTypeEnum[transfer_type] query = query.filter( CreditTransfer.transfer_type == transfer_type_enum) except KeyError: response_object = { 'message': 'Invalid Filter: Transfer Type ', } return make_response(jsonify(response_object)), 400 if transfer_account_ids: # We're getting a list of transfer accounts - parse try: parsed_transfer_account_ids = list( map(lambda x: int(x), filter(None, transfer_account_ids.split(',')))) except ValueError: response_object = { 'message': 'Invalid Filter: Transfer Account IDs ', } return make_response(jsonify(response_object)), 400 if parsed_transfer_account_ids: query = query.filter( or_( CreditTransfer.recipient_transfer_account_id.in_( parsed_transfer_account_ids), CreditTransfer.sender_transfer_account_id.in_( parsed_transfer_account_ids))) transfers, total_items, total_pages = paginate_query( query, CreditTransfer) # # if get_transfer_stats: # transfer_stats = calculate_transfer_stats(total_time_series=True) # else: # transfer_stats = None transfer_stats = { 'total_distributed': '15300.0000000000000000', 'total_spent': 0, 'total_exchanged': 0, 'has_transferred_count': 0, 'zero_balance_count': 0, 'total_beneficiaries': 3, 'total_users': 3, 'master_wallet_balance': 0, 'daily_transaction_volume': [{ 'date': '2020-04-29T07:05:01.771621', 'volume': 0 }], 'daily_disbursement_volume': [{ 'date': '2020-04-29T00:00:00', 'volume': ('300.0000000000000000') }, { 'date': '2020-04-28T00:00:00', 'volume': '15000.0000000000000000' }], 'transfer_use_breakdown': [], 'last_day_volume': { 'date': '2020-04-29T07:05:01.771617', 'volume': 0 }, 'filter_active': False } if AccessControl.has_sufficient_tier(g.user.roles, 'ADMIN', 'admin'): transfer_list = credit_transfers_schema.dump(transfers).data elif AccessControl.has_sufficient_tier(g.user.roles, 'ADMIN', 'view'): transfer_list = view_credit_transfers_schema.dump( transfers).data response_object = { 'status': 'success', 'message': 'Successfully Loaded.', 'items': total_items, 'pages': total_pages, 'data': { 'credit_transfers': transfer_list, 'transfer_stats': transfer_stats } } return make_response(jsonify(response_object)), 200
def get(self, credit_transfer_id): transfer_account_ids = request.args.get('transfer_account_ids') transfer_type = request.args.get('transfer_type', 'ALL') get_transfer_stats = request.args.get('get_stats', False) transfer_list = None if transfer_type: transfer_type = transfer_type.upper() if credit_transfer_id: credit_transfer = CreditTransfer.query.get(credit_transfer_id) if credit_transfer is None: return make_response(jsonify({'message': 'Credit transfer not found'})), 404 if AccessControl.has_sufficient_tier(g.user.roles, 'ADMIN', 'admin'): transfer_list = credit_transfers_schema.dump([credit_transfer]).data elif AccessControl.has_any_tier(g.user.roles, 'ADMIN'): transfer_list = view_credit_transfers_schema.dump([credit_transfer]).data transfer_stats = [] response_object = { 'status': 'success', 'message': 'Successfully Loaded.', 'data': { 'credit_transfer': transfer_list, 'transfer_stats': transfer_stats } } return make_response(jsonify(response_object)), 200 else: query = CreditTransfer.query transfer_list = None if transfer_type != 'ALL': try: transfer_type_enum = TransferTypeEnum[transfer_type] query = query.filter(CreditTransfer.transfer_type == transfer_type_enum) except KeyError: response_object = { 'message': 'Invalid Filter: Transfer Type ', } return make_response(jsonify(response_object)), 400 if transfer_account_ids: # We're getting a list of transfer accounts - parse try: parsed_transfer_account_ids = list( map(lambda x: int(x), filter(None, transfer_account_ids.split(',')))) except ValueError: response_object = { 'message': 'Invalid Filter: Transfer Account IDs ', } return make_response(jsonify(response_object)), 400 if parsed_transfer_account_ids: query = query.filter( or_(CreditTransfer.recipient_transfer_account_id.in_(parsed_transfer_account_ids), CreditTransfer.sender_transfer_account_id.in_(parsed_transfer_account_ids))) transfers, total_items, total_pages = paginate_query(query, CreditTransfer) if get_transfer_stats: transfer_stats = calculate_transfer_stats(total_time_series=True) else: transfer_stats = None if AccessControl.has_sufficient_tier(g.user.roles, 'ADMIN', 'admin'): transfer_list = credit_transfers_schema.dump(transfers).data elif AccessControl.has_sufficient_tier(g.user.roles, 'ADMIN', 'view'): transfer_list = view_credit_transfers_schema.dump(transfers).data response_object = { 'status': 'success', 'message': 'Successfully Loaded.', 'items': total_items, 'pages': total_pages, 'data': { 'credit_transfers': transfer_list, 'transfer_stats': transfer_stats } } return make_response(jsonify(response_object)), 200