def post(self, request, *args, **kwargs): shop_id = int(kwargs['shop_id']) url = api_settings.ADD_AGENT_DEVICE self.logger.info('========== Start add device ==========') channel_id = request.POST["channel_id"] channel_type = get_channel_detail(self, channel_id) params = { "channel_type_id": channel_type['channel_type_id'], "channel_id": channel_id, "shop_id": shop_id } is_success, status_code, status_message, data = RestFulClient.post(url=url, headers=self._get_headers(), params=params, loggers=self.logger) API_Logger.post_logging(loggers=self.logger, params=params, response=data, status_code=status_code) self.logger.info('========== Finish add shop ==========') if is_success: messages.success(request, 'Add device successfully') else: messages.success(request, 'Add device successfully') return redirect('shop:shop_edit', id=shop_id)
def get_shop_categories(self, body): url = api_settings.GET_LIST_SHOP_CATEGORIES self.logger.info( '========== Start get shop categories list ==========') success, status_code, status_message, data = RestFulClient.post( url=url, headers=self._get_headers(), loggers=self.logger, params=body, timeout=settings.GLOBAL_TIMEOUT) if data is None: data = {} data['shop_categories'] = [] else: page = data.get("page", {}) self.logger.info('Total element: {}'.format( page.get('total_elements', 0))) API_Logger.post_logging(loggers=self.logger, params=body, response=data['shop_categories'], status_code=status_code, is_getting_list=True) self.logger.info( '========== Finish get shop categories list ==========') return data
def _upload_via_api(request, file, function_id, logger): myHeader = get_auth_header(request.user) # myHeader["content-type"] = None myHeader["content-type"] = None myHeader["Content-Type"] = None is_success, status_code, status_message, data = RestFulClient.upload( url=UPLOAD_FILE, files={'file_data': file}, headers=myHeader, loggers=logger, params={'function_id': function_id}, timeout=settings.GLOBAL_TIMEOUT) API_Logger.post_logging(loggers=logger, params={ 'file_data': file._name, 'function_id': function_id }, response=data, status_code=status_code, is_getting_list=True) if not is_success: data = [] return data
def get_context_data(self, **kwargs): product_id = self.kwargs['product_id'] self.logger.info('========== Start get product details ==========') params = {"id": product_id, 'paging': False} is_success, status_code, status_message, data = RestFulClient.post( url=api_settings.GET_PRODUCT_DETAIL, headers=self._get_headers(), loggers=self.logger, params=params) API_Logger.post_logging(loggers=self.logger, params=params, response=data, status_code=status_code, is_getting_list=False) self.logger.info('========== Finished get product details ==========') product = data['products'][0] if not product['denomination']: product['denomination'] = [''] product['product_category_id'] = product['product_category']['id'] context = {"product": product} context['cbo_agent_types'] = self.get_agent_type(product_id) self.set_ui_list(context) return context
def get_context_data(self, **kwargs): self.logger.info('========== Start get bank detail ==========') context = super(EditView, self).get_context_data(**kwargs) bank_id = context['bank_id'] params = {'id': bank_id} is_success, status_code, status_message, bank_detail = BanksClient.get_bank_details( params=params, headers=self._get_headers(), logger=self.logger) API_Logger.post_logging(loggers=self.logger, params=params, response=bank_detail, status_code=status_code) self.logger.info('========== Finished get bank detail ==========') self.logger.info('========== Start get currency list ==========') is_success_currencies, status_code_currencies, currencies = BanksClient.get_currencies_list( header=self._get_headers(), logger=self.logger) API_Logger.get_logging(loggers=self.logger, response=currencies, status_code=status_code_currencies) if not is_success: messages.error(self.request, status_message) if not is_success_currencies: messages.error(self.request, currencies) currencies = [] context = {'bank': bank_detail, 'currencies': currencies} self.logger.info('========== Finished get currency list ==========') return context
def _add_agent_smart_card(self, agent_id, params): url = ADD_AGENT_SMART_CARD_PATH.format(agent_id) is_success, status_code, status_message, data = RestFulClient.post( url=url, headers=self._get_headers(), loggers=self.logger, params=params, timeout=settings.GLOBAL_TIMEOUT) API_Logger.post_logging(loggers=self.logger, params=params, response=data, status_code=status_code) if is_success: messages.add_message(self.request, messages.SUCCESS, 'Add agent smartcard successfully') elif status_message == 'timeout': messages.add_message( self.request, messages.ERROR, "Can not add SmartCard for this user, please try again or contact technical support" ) elif status_message == "Invalid agent smartcard": messages.add_message(self.request, messages.ERROR, status_message) return is_success
def get_agent_type(self, product_id): self.logger.info( '========== Start get product - agent types relations ==========') params = {'product_id': product_id} is_success, status_code, status_message, data = RestFulClient.post( url=api_settings.PRODUCT_AGENT_TYPE, headers=self._get_headers(), loggers=self.logger, params=params) relations = data['relations'] API_Logger.post_logging(loggers=self.logger, params=params, response=relations, status_code=status_code, is_getting_list=True) self.logger.info( '========== Finished get product - agent types relations ==========' ) agent_types = [] for item in relations: agent_type_id = item['agent_type_id'] agent_types.append(agent_type_id) return agent_types
def get_products(self, category_id): self.logger.info('========== Start get list product ==========') api_path = api_settings.GET_PRODUCTS body = { "product_category_id": category_id, "paging": False, "is_deleted": False } success, status_code, status_message, data = RestFulClient.post( url=api_path, headers=self._get_headers(), loggers=self.logger, params=body, timeout=settings.GLOBAL_TIMEOUT, ) data = data or {} API_Logger.post_logging(loggers=self.logger, params=body, status_code=status_code, is_getting_list=True) self.logger.info('========== Finish get list product ==========') return data, success, status_message
def _add_agent_sof_cash(self, params): is_success, status_code, status_message, data = RestFulClient.post(url=CREATE_AGENT_BALANCE_URL, headers=self._get_headers(), loggers=self.logger, params=params, timeout=settings.GLOBAL_TIMEOUT) API_Logger.post_logging(loggers=self.logger, params=params, response=data, status_code=status_code) if is_success: messages.add_message( self.request, messages.SUCCESS, 'New currency added as cash SOF' ) elif status_message == 'timeout': message = "Transaction Timeout : Cannot add SOF Cash, please try again or contact technical support" self._add_error_message(message) elif status_message == 'Invalid agent information' and status_code == 'invalid_request': self._add_error_message("Cannot add SOF Cash - '" + status_message + "'") elif status_message == 'Invalid SOF information' and status_code == 'invalid_request': self._add_error_message("Cannot add SOF Cash - '" + status_message + "'") else: self._add_error_message("Cannot add SOF Cash - '" + status_message + "'") return is_success
def get_category_detail(self, category_id): self.logger.info('========== Start get category detail ==========') api_path = api_settings.GET_CATEGORIES body = {"id": category_id} success, status_code, status_message, data = RestFulClient.post( url=api_path, headers=self._get_headers(), loggers=self.logger, params=body, timeout=settings.GLOBAL_TIMEOUT) data = data or {} if status_code not in [ "access_token_expire", 'authentication_fail', 'invalid_access_token' ]: API_Logger.post_logging(loggers=self.logger, params=body, status_code=status_code, is_getting_list=False, response=data) self.logger.info('========== Finish get category detail ==========') return data, success, status_message, status_code
def get_category_name(self, category_id): self.logger.info('========== Start getting category details ==========') url = GET_CATEGORIES params = { 'id': category_id, 'paging': False, } is_success, status_code, status_message, data= RestFulClient.post(url=url, headers=self._get_headers(), loggers=self.logger, params=params, timeout=settings.GLOBAL_TIMEOUT) API_Logger.post_logging(loggers=self.logger, params=params, response=data, status_code=status_code) self.logger.info('========== Finish getting category details ==========') if not is_success: messages.add_message( self.request, messages.ERROR, status_message ) return str(category_id) return data['product_categories'][0]['name']
def get_agent_type(self, product_id): self.logger.info('========== Start getting agent type id ==========') url = PRODUCT_AGENT_TYPE params = { 'product_id': product_id, } is_success, status_code, status_message, data = RestFulClient.post(url=url, headers=self._get_headers(), loggers=self.logger, params=params, timeout=settings.GLOBAL_TIMEOUT) API_Logger.post_logging(loggers=self.logger, params=params, response=data, status_code=status_code) self.logger.info('========== Finish getting agent type id ==========') if not is_success: messages.add_message( self.request, messages.ERROR, status_message ) return [] relations = data['relations'] agent_types = [] for item in relations: agent_type_id = item['agent_type_id'] agent_type_name = self.get_agent_type_name(agent_type_id) agent_types.append(agent_type_name) return agent_types
def get_card_types_list(self): is_success, status_code, status_message, data = RestFulClient.post(url=SEARCH_CARD_TYPE, headers=self._get_headers(), loggers=self.logger, timeout=settings.GLOBAL_TIMEOUT) API_Logger.post_logging(loggers=self.logger, response=data, status_code=status_code, is_getting_list=True) return data
def _get_card_sof_transaction(self, body): success, status_code, status_message, data = RestFulClient.post(url=self.search_card_transaction, headers=self._get_headers(), loggers=self.logger, params=body) data = data or {} API_Logger.post_logging(loggers=self.logger, params=body, response=data.get('card_sof_transactions', []), status_code=status_code, is_getting_list=True) return data, success, status_message
def create_fraud_ticket(self, params): success, status_code, message, data = RestFulClient.post( url=CREATE_FRAUD_TICKET, headers=self._get_headers(), loggers=self.logger, params=params) API_Logger.post_logging(loggers=self.logger, params=params, response=data, status_code=status_code) return success, data, message
def add_shop_type(self, params): success, status_code, message, data = RestFulClient.post( url=api_settings.SHOP_TYPE_CREATE, params=params, loggers=self.logger, headers=self._get_headers()) API_Logger.post_logging(loggers=self.logger, params=params, response=data, status_code=status_code) return success, status_code, message, data
def _get_agents(self, params): self.logger.info('========== Start searching agent ==========') api_path = SEARCH_AGENT success, status_code, status_message, data = RestFulClient.post( url=api_path, headers=self._get_headers(), loggers=self.logger, params=params) data = data or {} API_Logger.post_logging(loggers=self.logger, params=params, response=data.get('agents', []), status_code=status_code, is_getting_list=True) if success: has_permission_view = check_permissions_by_user( self.request.user, 'CAN_VIEW_AGENT') has_permission_edit = check_permissions_by_user( self.request.user, 'CAN_EDIT_AGENT_DETAILS') has_permission_delete = check_permissions_by_user( self.request.user, 'CAN_DELETE_AGENT') has_permission_identity = check_permissions_by_user( self.request.user, 'CAN_VIEW_AGENT_IDENTITIES') has_permission_smartcard = check_permissions_by_user( self.request.user, 'CAN_VIEW_AGENT_SMARTCARD') has_permission_sofcash = check_permissions_by_user( self.request.user, 'CAN_VIEW_AGENT_SOFCASH') has_permission_sofbank = check_permissions_by_user( self.request.user, 'CAN_VIEW_AGENT_SOFBANK') has_permission_suspend = check_permissions_by_user( self.request.user, 'CAN_SUSPEND_AGENTS') has_permission_individual_wallet = check_permissions_by_user( self.request.user, 'CAN_VIEW_AGENT_INDIVIDUAL_WALLET') has_permission_management = self.check_membership( ['CAN_VIEW_PROFILE_MANAGEMENT']) agents = data.get('agents', []) for i in agents: i['has_permission_view'] = has_permission_view i['has_permission_edit'] = has_permission_edit i['has_permission_delete'] = has_permission_delete i['has_permission_identity'] = has_permission_identity i['has_permission_individual_wallet'] = has_permission_individual_wallet i['has_permission_smartcard'] = has_permission_smartcard i['has_permission_sofcash'] = has_permission_sofcash i['has_permission_sofbank'] = has_permission_sofbank i['has_permission_suspend'] = has_permission_suspend i['has_permission_management'] = has_permission_management self.logger.info('========== Finished searching agent ==========') return data, success, status_message
def get_shop_category_detail(self, id): params = {'id': id} success, status_code, message, data = RestFulClient.post( url=api_settings.GET_LIST_SHOP_CATEGORIES, params=params, loggers=self.logger, headers=self._get_headers()) API_Logger.post_logging(loggers=self.logger, params=params, response=data, status_code=status_code) return success, status_code, message, data.get('shop_categories')
def get_shop_type_detail(self, id): self.logger.info('========== Start getting shop type detail ==========') params = {'id': id} success, status_code, message, data = RestFulClient.post( url=api_settings.GET_SHOP_TYPE_DETAIL, params=params, loggers=self.logger, headers=self._get_headers() ) API_Logger.post_logging(loggers=self.logger, params=params, response=data, status_code=status_code) self.logger.info('========== Finish getting shop type detail ==========') return success, status_code, message, data.get('shop_types')
def search_user_list(self, body): is_success, status_code, status_message, data = RestFulClient.post( url=GET_USER_BY_PHONE_URL, headers=self._get_headers(), loggers=self.logger, params=body) API_Logger.post_logging(loggers=self.logger, response=data, status_code=status_code, is_getting_list=False) return is_success, status_code, status_message, data
def _get_bank_sof_list(self, body): success, status_code, status_message, data = RestFulClient.post( url=self.searchcustomerbanksofurl, headers=self._get_headers(), loggers=self.logger, params=body) data = data or {} API_Logger.post_logging(loggers=self.logger, params=body, response=data.get('bank_sofs', []), status_code=status_code, is_getting_list=True) return data, success, status_message
def add_product_agent_relation(self, body_request): url = api_settings.CREATE_PRODUCT_AGENT_RELATION is_success, status_code, status_message, data = RestFulClient.post( url, headers=self._get_headers(), params=body_request, loggers=self.logger) API_Logger.post_logging(loggers=self.logger, params=body_request, response=data, status_code=status_code) return is_success
def create_condition(self, rule_id, mechanic_id, params): success, status_code, message, data = RestFulClient.post( url=api_settings.CREATE_CONDITION.format(rule_id=rule_id, mechanic_id=mechanic_id), headers=self._get_headers(), loggers=self.logger, params=params) API_Logger.post_logging(loggers=self.logger, params=params, response=data, status_code=status_code) return success, data, message
def get_relation_id_of_product(self, body_request): is_success, status_code, status_message, data = RestFulClient.post( url=api_settings.GET_PRODUCT_AGENT_RELATION, headers=self._get_headers(), loggers=self.logger, params=body_request) API_Logger.post_logging(loggers=self.logger, params=body_request, response=data, status_code=status_code, is_getting_list=False) if data['relations']: relation = data['relations'][0] return relation['id']
def get_cash_sof_list(self, body,opening_page_index): body['paging'] = True body['page_index'] = int(opening_page_index) success, status_code, status_message, data = RestFulClient.post(url=CASH_SOFS_URL, headers=self._get_headers(), params=body, loggers=self.logger) data = data or {} API_Logger.post_logging( loggers=self.logger, params=body, response=data.get('cash_sofs', []), status_code=status_code, is_getting_list=True ) return data, success
def _add_agent_identity(self, agent_id, body): url = AGENT_ADD_IDENTITY_PATH.format(agent_id=agent_id) # url = 'http://localhost:4892/timeout' success, status_code, message, data = RestFulClient.post( url=url, headers=self._get_headers(), loggers=self.logger, params=body) API_Logger.post_logging(loggers=self.logger, params=body, response=data, status_code=status_code) return success, message
def _get_relationships(self, params): api_path = SEARCH_RELATIONSHIP success, status_code, status_message, data = RestFulClient.post( url=api_path, headers=self._get_headers(), loggers=self.logger, params=params) data = data or {} API_Logger.post_logging(loggers=self.logger, params=params, response=data.get('relationships', []), status_code=status_code, is_getting_list=True) return data, success, status_message
def _do_approval(self, request): self.logger.info( '========== Start Approve balance adjustment order ==========') reference_id = request.POST.get('reference_id') url = api_settings.APPROVE_BAL_ADJUST_PATH.format( reference_id=reference_id) #url = 'http://localhost:4393/general_error_approval' body = {'reason': request.POST.get('reason_for_approval_or_reject')} is_success, status_code, status_message, data = RestFulClient.post( url=url, headers=self._get_headers(), loggers=self.logger, params=body) API_Logger.post_logging(loggers=self.logger, params=body, response=data, status_code=status_code) self.logger.info( '========== Finish Approve balance adjustment order ==========') if is_success: messages.add_message(request, messages.SUCCESS, 'Payment is approved successfully') return redirect('balance_adjustment:balance_adjustment_list') elif status_code.lower() in ["general_error"]: error_msg = 'Other error, please contact system administrator' return self._handle_error(error_msg, reference_id) # If get error timeout, response as success to client elif status_code.lower() in [ "external_call_timeout", "internal_call_timeout", "sof_timeout", "timeout" ]: self.logger.info( 'get timeout error from server but considers as success to client' ) messages.add_message(request, messages.SUCCESS, 'Payment is approved successfully') return redirect('balance_adjustment:balance_adjustment_list') elif status_message == 'timeout': messages.add_message( request, messages.ERROR, 'Request timed-out, please try again or contact system administrator' ) return redirect('balance_adjustment:balance_adjustment_detail', ReferenceId=reference_id) else: return self._handle_error(status_message, reference_id)
def _get_identity_type_list(self): api_path = api_settings.GET_IDENTITY_TYPES body = {"is_deleted": False} success, status_code, status_message, data = RestFulClient.post( url=api_path, headers=self._get_headers(), loggers=self.logger, params=body) data = data or {} API_Logger.post_logging(loggers=self.logger, params=body, response=data.get('identity_types', []), status_code=status_code, is_getting_list=True) return data.get('identity_types', [])
def get_voucher_group_list(self): url = GET_VOUCHER_GROUP_LIST is_success, status_code, data = RestFulClient.get( url=url, headers=self._get_headers(), loggers=self.logger) API_Logger.post_logging(loggers=self.logger, response=data, status_code=status_code, is_getting_list=False) if not is_success: messages.add_message(self.request, messages.ERROR, "Something went wrong") data = [] return data