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)
Esempio n. 2
0
    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
Esempio n. 4
0
    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
Esempio n. 5
0
    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
Esempio n. 7
0
    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
Esempio n. 11
0
    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']
Esempio n. 12
0
    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
Esempio n. 13
0
 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
Esempio n. 15
0
    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
Esempio n. 16
0
 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
Esempio n. 17
0
    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
Esempio n. 18
0
 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')
Esempio n. 19
0
 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
Esempio n. 22
0
    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
Esempio n. 24
0
 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
Esempio n. 26
0
    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
Esempio n. 27
0
    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
Esempio n. 28
0
    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)
Esempio n. 29
0
 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