コード例 #1
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
コード例 #2
0
    def post(self, request, *args, **kwargs):
        self.logger.info('========== Start create card provider ==========')
        provider_name = request.POST.get('provider_name')
        params = {}
        if not provider_name:
            return render(request, self.template_name)
        params['name'] = provider_name
        self.logger.info('Params: {}'.format(params))
        success, status_code, status_message, data = RestFulClient.post(url=self.url,
                                                                        headers=self._get_headers(),
                                                                        loggers=self.logger,
                                                                        timeout=settings.GLOBAL_TIMEOUT,
                                                                        params=params)
        self.logger.info('========== Finish create card provider ==========')
        if success:
            messages.add_message(
                request,
                messages.SUCCESS,
                'Add provider successfully'
            )
            return redirect('card_provider:card_provider')
        else:
            if status_code in ['access_token_expire', 'authentication_fail',
                               'invalid_access_token', 'authentication_fail']:
                self.logger.info(
                    "{} for {} username".format(status_message, self.request.user))
                raise InvalidAccessToken(status_message)

            messages.add_message(
                request,
                messages.ERROR,
                status_message
            )
            return render(request, self.template_name)
コード例 #3
0
    def _list_categories(self):
        self.logger.info('========== Start get category list ==========')
        api_path = api_settings.GET_CATEGORIES

        body = {
            "paging": 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)
        self.logger.info("Params: {} ".format(body))
        if success:
            data = data['product_categories']
            self.logger.info("Response_content_count:{}".format(len(data)))
            self.logger.info('========== Finish get category list ==========')
            return data
        elif (status_code == "access_token_expire") or (status_code == 'authentication_fail') or (
                    status_code == 'invalid_access_token'):
            self.logger.info("{}".format(data))
            raise InvalidAccessToken(data)
        else:
            return None
コード例 #4
0
 def get(self, request, *args, **kwargs):
     self.logger.info('========== Start get agent detail ==========')
     api_path = api_settings.AGENT_DETAIL_PATH
     id = kwargs['id']
     params = {'id': id}
     success, status_code, status_message, data = RestFulClient.post(
         url=api_path,
         headers=self._get_headers(),
         loggers=self.logger,
         params=params)
     self.logger.info("Params: {} ".format(params))
     if success:
         self.logger.info("{}".format(data))
         self.logger.info('========== Finish get agent detail ==========')
         if len(data['agents']) == 0:
             return JsonResponse({'wrong_agent': True})
         else:
             return JsonResponse(data['agents'][0])
     elif (status_code == "access_token_expire") or (
             status_code
             == 'authentication_fail') or (status_code
                                           == 'invalid_access_token'):
         self.logger.info("{}".format(data))
         return JsonResponse({"invalid_access_token": True})
     else:
         return JsonResponse({'wrong_agent': True})
コード例 #5
0
    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
コード例 #6
0
    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
コード例 #7
0
    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
コード例 #8
0
    def get_service_group_list(self, body):
        is_success, status_code, status_message, data = RestFulClient.post(url=api_settings.SERVICE_GROUP_LIST_PATH,
                                                                           headers=self._get_headers(),
                                                                           loggers=self.logger,
                                                                           params=body)
        is_permission_detail = check_permissions_by_user(self.request.user, 'CAN_VIEW_SERVICE_GROUP')
        is_permission_edit = check_permissions_by_user(self.request.user, 'CAN_EDIT_SERVICE_GROUP')
        is_permission_delete = check_permissions_by_user(self.request.user, 'CAN_DELETE_SERVICE_GROUP')

        if is_success:
            self.logger.info('Finished get service group list')
            for i in data.get('service_groups'):
                i['is_permission_detail'] = is_permission_detail
                i['is_permission_edit'] = is_permission_edit
                i['is_permission_delete'] = is_permission_delete
        else:
            if status_code == "Timeout":
                self.logger.error('Search service group list request timeout')
                status_message = 'Search timeout, please try again or contact technical support'
            else:
                self.logger.error('Search service group list request failed')
                status_message = 'Search failed, please try again or contact support'

            messages.add_message(
                self.request,
                messages.ERROR,
                status_message
            )

        API_Logger.get_logging(loggers=self.logger,
                               response=data,
                               status_code=status_code)
        return data, is_success
コード例 #9
0
    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)
コード例 #10
0
    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
コード例 #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']
コード例 #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
コード例 #13
0
    def post(self, request, *args, **kwargs):
        self.logger.info('========== Start get card provider list ==========')
        context = super(CardProviderList, self).get_context_data(**kwargs)
        provider_name = request.POST.get('provider_name')
        params = {}
        if provider_name:
            params['name'] = provider_name
        self.logger.info('Params: {}'.format(params))
        is_success, status_code, status_message, data = RestFulClient.post(
            url=self.url,
            headers=self._get_headers(),
            loggers=self.logger,
            timeout=settings.GLOBAL_TIMEOUT,
            params=params)
        if not is_success:
            if status_code in [
                    "access_token_expire", 'authentication_fail',
                    'invalid_access_token'
            ]:
                self.logger.info("{}".format(status_message))
                raise InvalidAccessToken(status_message)
        self.logger.info('Response_content_count: {}'.format(len(data)))
        is_permission_detail = check_permissions_by_user(
            self.request.user, 'SYS_VIEW_DETAIL_PROVIDER')
        is_permission_edit = check_permissions_by_user(self.request.user,
                                                       'SYS_EDIT_PROVIDER')

        for i in data:
            i['is_permission_detail'] = is_permission_detail
            i['is_permission_edit'] = is_permission_edit

        context.update({'data': data, 'provider_name': provider_name})
        self.logger.info('========== Finish get card provider list ==========')

        return render(request, self.template_name, context)
コード例 #14
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
コード例 #15
0
 def get_rule_config(self, identity_type_id):
     url = api_settings.PASSWORD_CENTER_RULE_CONFIG_URL
     body = {'identity_type_id': identity_type_id}
     is_success, status_code, status_message, data = RestFulClient.post(
         url=url,
         headers=self._get_headers(),
         loggers=self.logger,
         params=body)
     data = data or {}
     return data
コード例 #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
コード例 #17
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')
コード例 #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')
コード例 #19
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
コード例 #20
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
コード例 #21
0
    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
コード例 #22
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']
コード例 #23
0
 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
コード例 #24
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
コード例 #25
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
コード例 #26
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', [])
コード例 #27
0
def get_agent_detail(self, id):
    api_path = api_settings.AGENT_DETAIL_PATH
    params = {'id': id}
    success, status_code, status_message, data = RestFulClient.post(
        url=api_path,
        headers=self._get_headers(),
        loggers=self.logger,
        params=params)
    if success:
        return data['agents'][0]
    elif (status_code == "access_token_expire") or (
            status_code
            == 'authentication_fail') or (status_code
                                          == 'invalid_access_token'):
        raise InvalidAccessToken(status_message)
コード例 #28
0
    def _create_card_design(self, url, params):
        is_success, status_code, status_message, data = RestFulClient.post(
            url=url,
            loggers=self.logger,
            headers=self._get_headers(),
            params=params)
        API_Logger.post_logging(loggers=self.logger,
                                params=params,
                                response=data,
                                status_code=status_code)

        if not is_success:
            messages.add_message(self.request, messages.ERROR, status_message)
            data = {}

        return is_success, data
コード例 #29
0
 def _get_agent_summary(self):
     url = api_settings.GET_AGENT_SUMMARY
     # url = 'http://localhost:7357/get_agent_summary'
     is_success, status_code, status_message, data = RestFulClient.post(
         url=url,
         headers=self._get_headers(),
         loggers=self.logger,
         params={})
     API_Logger.post_logging(loggers=self.logger,
                             params={},
                             response=data,
                             status_code=status_code,
                             is_getting_list=False)
     if not is_success:
         data = {}
     return data, is_success
コード例 #30
0
    def _create_agent_balance(self, request, agent_id):

        currency = request.POST.get('currency')
        # sof_type = "cash"  # TODO: Hard code for Sof_Type
        body = {
            'currency': currency,
            'user_id': agent_id,
            'user_type_id': 2
        }  #TODO: Hard code for agent_type
        api_path = api_settings.CREATE_AGENT_BALANCE_URL

        is_success, status_code, status_message, data = RestFulClient.post(
            url=api_path,
            headers=self._get_headers(),
            loggers=self.logger,
            params=body)
        return data, is_success