Beispiel #1
0
def add_topup(request):
    form = CreditForm(request.POST)
    if not form.is_valid():
        error_msg = ""
        for k, v in form.errors.items():
            error_msg += "%s: %s\n" % (k, ", ".join(v))
        return HttpResponse(json.dumps({
            'success': False,
            'msg': error_msg
        }),
                            content_type="application/json")
    subscriber_id = form.cleaned_data['userName']
    transaction_id = form.cleaned_data['transactionId']
    credit_amount = form.cleaned_data['creditAmount']

    logger.debug(
        "Adding topup for user (%s), with credit amount (%s), transaction id: (%s)",
        subscriber_id, credit_amount, transaction_id)
    pcrf_client = PCRFClient()

    result = pcrf_client.credit_subscriber(subscriber_id, credit_amount)

    response = {
        'success': result['action_result'],
        'msg': result.get('action_error_message')
    }
    log_action(inspect.stack()[0][3],
               request,
               response,
               transaction_id=transaction_id)
    return HttpResponse(json.dumps(response), content_type="application/json")
Beispiel #2
0
    def get(self, request, format=None, **kwargs):
        serializer = kwargs['serializer']
        card_number = serializer.validated_data['cardNumber']
        port_number = serializer.validated_data['portNumber']
        host_address = serializer.validated_data['deviceIp']
        shelf_number = serializer.validated_data.get('shelfNumber')
        community_id = serializer.validated_data['communityId']
        transaction_id = serializer.validated_data.get('transactionId')

        client = get_client(community_id)
        result, msg, physical_status = client.get_subscriber_status(
            host_address, port_number, card_number, shelf_number)
        if not result:
            response = {
                'success': False,
                'msg': "Error while getting ADSL subscriber, {0}".format(msg)
            }
            log_action("{0}.{1}".format(str(self), 'get'), request, response,
                       transaction_id)
            return Response(response, status=status.HTTP_200_OK)

        response = {'success': True, 'enabled': physical_status, 'msg': None}
        log_action("{0}.{1}".format(str(self), 'get'), request, response,
                   transaction_id)
        return Response(response, status=status.HTTP_200_OK)
Beispiel #3
0
def get_services(request):
    logger.debug("Getting (%s) services for user (%s), transaction id: (%s)",
                 request.GET['serviceType'].encode('utf-8').strip(),
                 request.GET['userName'].encode('utf-8').strip(),
                 request.GET['transactionId'].encode('utf-8').strip())
    form = ServiceForm(request.GET)
    if not form.is_valid():
        error_msg = ""
        for k, v in form.errors.items():
            error_msg += "%s: %s\n" % (k, ", ".join(v))
        return HttpResponse(json.dumps({
            'success': False,
            'msg': error_msg
        }),
                            content_type="application/json")
    pcrf_client = PCRFClient()
    result = pcrf_client.get_services(
        subscriber_id=form.cleaned_data['userName'],
        service_type=form.cleaned_data['serviceType'],
        start_date=form.cleaned_data.get('startDate'),
        end_date=form.cleaned_data.get('endDate'))

    response = {
        'success': result['action_result'],
        'msg': result.get('action_error_message'),
        'services': result.get('services')
    }
    log_action(inspect.stack()[0][3],
               request,
               response,
               transaction_id=request.GET['transactionId'])
    return HttpResponse(json.dumps(response), content_type="application/json")
Beispiel #4
0
def get_session(request):
    form = InputForm(request.GET)
    if not form.is_valid():
        error_msg = ""
        for k, v in form.errors.items():
            error_msg += "%s: %s\n" % (k, ", ".join(v))
        return HttpResponse(json.dumps({
            'success': False,
            'msg': error_msg
        }),
                            content_type="application/json")

    subscriber_id = form.cleaned_data['userName']
    transaction_id = form.cleaned_data['transactionId']
    logger.debug("Getting session for user (%s), transaction id: (%s)",
                 subscriber_id, transaction_id)

    pcrf_client = PCRFClient()
    result = pcrf_client.query_session(subscriber_id=subscriber_id)

    response = {
        'success': result['action_result'],
        'msg': result.get('action_error_message'),
        'session': result.get('session')
    }

    log_action(inspect.stack()[0][3],
               request,
               response,
               transaction_id=transaction_id)
    return HttpResponse(json.dumps(response), content_type="application/json")
Beispiel #5
0
def debit_user(request):
    form = DebitForm(request.POST)
    if not form.is_valid():
        error_msg = ""
        for k, v in form.errors.items():
            error_msg += "%s: %s\n" % (k, ", ".join(v))
        return HttpResponse(json.dumps({
            'success': False,
            'msg': error_msg
        }),
                            content_type="application/json")

    subscriber_id = form.cleaned_data['userName']
    service_name = form.cleaned_data['serviceName']
    debit_amount = int(form.cleaned_data['debitAmount'])
    transaction_id = form.cleaned_data['transactionId']

    logger.debug(
        "Debiting user (%s), for service (%s), with amount (%s), transaction id: (%s)",
        subscriber_id, service_name, debit_amount, transaction_id)
    pcrf_client = PCRFClient()
    result = pcrf_client.debit_subscriber(subscriber_id, service_name,
                                          debit_amount)
    response = {
        'success': result['action_result'],
        'msg': result.get('action_error_message'),
    }

    log_action(inspect.stack()[0][3],
               request,
               response,
               transaction_id=transaction_id)
    return HttpResponse(json.dumps(response), content_type="application/json")
Beispiel #6
0
def get_profile(request):
    form = InputForm(request.GET)
    if not form.is_valid():
        error_msg = ""
        for k, v in form.errors.items():
            error_msg += "%s: %s\n" % (k, ", ".join(v))
        return HttpResponse(json.dumps({
            'success': False,
            'msg': error_msg
        }),
                            content_type="application/json")

    subscriber_id = form.cleaned_data['userName']
    transaction_id = form.cleaned_data['transactionId']
    free_quota = form.cleaned_data['freeQuota']

    pcrf_client = PCRFClient()
    profile_result = pcrf_client.get_profile(subscriber_id=subscriber_id,
                                             free_quota=free_quota)
    logger.debug("Getting profile for user (%s), transaction id: (%s)",
                 subscriber_id, transaction_id)
    if not profile_result['action_result']:
        response = {
            'success':
            True if profile_result.get('action_error_message').endswith(
                "does not exist") else profile_result['action_result'],
            'msg':
            profile_result.get('action_error_message'),
        }
        if 'not_exist' in profile_result:
            response['not_exist'] = profile_result['not_exist']
        log_action(inspect.stack()[0][3],
                   request,
                   response,
                   transaction_id=transaction_id)
        return HttpResponse(json.dumps(response),
                            content_type="application/json")

    topups_result = pcrf_client.get_services(subscriber_id,
                                             service_type='topup',
                                             free_quota=free_quota)

    response = {
        'success':
        True if topups_result.get('action_error_message',
                                  '').endswith("does not exist") else
        topups_result['action_result'],
        'msg':
        topups_result.get('action_error_message'),
        'profile':
        profile_result.get('profile'),
        'topups':
        topups_result.get('services')
    }

    log_action(inspect.stack()[0][3],
               request,
               response,
               transaction_id=transaction_id)
    return HttpResponse(json.dumps(response), content_type="application/json")
Beispiel #7
0
def create_or_change_service(request):
    logger.debug(
        "Creating or changing service (%s) for user (%s), transaction id: (%s)",
        request.POST['serviceName'].encode('utf-8').strip(),
        request.POST['userName'].encode('utf-8').strip(),
        request.POST['transactionId'].encode('utf-8').strip())
    form = CreateOrChangeForm(request.POST)
    if not form.is_valid():
        error_msg = ""
        for k, v in form.errors.items():
            error_msg += "%s: %s\n" % (k, ", ".join(v))
        return HttpResponse(json.dumps({
            'success': False,
            'msg': error_msg
        }),
                            content_type="application/json")
    pcrf_client = PCRFClient()
    result = pcrf_client.provision_subscriber(
        subscriber_id=form.cleaned_data['userName'],
        service_name=form.cleaned_data['serviceName'],
        start_date=form.cleaned_data['startDate'],
        end_date=form.cleaned_data['endDate'],
        reset_consumed=form.cleaned_data['resetConsumed'],
        carry_over=form.cleaned_data.get('carryOver'))

    response = {
        'success': result['action_result'],
        'msg': result.get('action_error_message')
    }

    log_action(inspect.stack()[0][3],
               request,
               response,
               transaction_id=request.POST['transactionId'])
    return HttpResponse(json.dumps(response), content_type="application/json")
Beispiel #8
0
def get_user_by_ip(request):
    form = IpInputForm(request.GET)
    if not form.is_valid():
        error_msg = ""
        for k, v in form.errors.items():
            error_msg += k + ": " + ", ".join(v) + "\n"
        logger.error(error_msg)
        result = {'error': True, 'error_message': error_msg}
        return HttpResponse(json.dumps(result),
                            content_type="application/json")

    logger.debug("Getting username for ip (%s)", request.GET['ipAddress'])
    aaa_client = AAAClient()
    result = aaa_client.get_session_by_ip(
        request.GET['ipAddress'].encode('utf-8').strip())
    response = {
        'success': result['action_result'],
        'msg': result.get('action_error_message'),
        'username': result.get('username')
    }

    log_action(inspect.stack()[0][3],
               request,
               response,
               transaction_id=request.GET['transactionId'])
    return HttpResponse(json.dumps(response), content_type="application/json")
Beispiel #9
0
def get_full_session(request):
    logger.debug("Getting full session for username (%s)",
                 request.GET['userName'])
    aaa_client = AAAClient()
    result = aaa_client.get_full_session(
        request.GET['userName'].encode('utf-8').strip())
    sessions = result.get('sessions')

    formatted_sessions = []

    if sessions:
        for session in sessions:
            formatted_session = {}
            for k, v in session.items():
                formatted_session[k.lower().replace('-', '_')] = v

            formatted_sessions.append(formatted_session)
    response = {
        'success': result['action_result'],
        'msg': result.get('action_error_message'),
        'sessions': formatted_sessions
    }

    log_action(inspect.stack()[0][3],
               request,
               response,
               transaction_id=request.GET['transactionId'])
    return HttpResponse(json.dumps(response), content_type="application/json")
Beispiel #10
0
def block_iptv_subscription(request):
    client = IPTVClient()
    customer_number = request.POST['customerNumber']
    result = client.create_iptv_session()
    transaction_id = request.POST['transactionId']
    if not result['action_result']:
        response = {
            'success': False,
            'msg': result.get('action_error_message'),
        }
        log_action(inspect.stack()[0][3],
                   request,
                   response,
                   transaction_id=transaction_id)
        return HttpResponse(json.dumps(response), mimetype="application/json")
    session_id = result['session_id']

    result = client.fetch_tv_subscriptions(session_id, customer_number)
    if not result['action_result']:
        response = {
            'success': False,
            'msg': result.get('action_error_message'),
        }
        return _release_session_and_return(session_id,
                                           request,
                                           fn_name=inspect.stack()[0][3],
                                           return_response=response,
                                           transaction_id=transaction_id)
    if not result['subscription'][0] or not result['subscription'][
            0].tvSubscriptionId:
        response = {
            'success': False,
            'msg':
            "Subscriber (%s) has no IPTV subscriptions." % customer_number,
        }
        return _release_session_and_return(session_id,
                                           request,
                                           fn_name=inspect.stack()[0][3],
                                           return_response=response,
                                           transaction_id=transaction_id)
    subscription_id = result['subscription'][0].tvSubscriptionId
    result = client.block_tv_subscription(session_id, subscription_id)
    if not result['action_result']:
        response = {
            'success': False,
            'msg': result.get('action_error_message'),
        }
        return _release_session_and_return(session_id,
                                           request,
                                           fn_name=inspect.stack()[0][3],
                                           return_response=response,
                                           transaction_id=transaction_id)

    response = {'success': True, 'msg': ""}
    return _release_session_and_return(session_id,
                                       request,
                                       fn_name=inspect.stack()[0][3],
                                       return_response=response,
                                       transaction_id=transaction_id)
Beispiel #11
0
    def delete(self, request, adslUserName, format=None):
        serializer = WifiSubscriberSerializer(data=request.data,
                                              is_delete=True)
        if not serializer.is_valid():
            return send_404_error_message(serializer)

        adsl_subscriber = adslUserName.strip("/ ")
        wifi_subscriber = ADSL_PATTERN.sub(r"\[email protected]",
                                           adsl_subscriber)
        transaction_id = serializer.validated_data['transactionId'].encode(
            'utf-8').strip()
        ldap_client = LDAPClient()
        result = ldap_client.get_subscriber_services(wifi_subscriber)
        if not result['action_result']:
            response = {
                'success': result['action_result'],
                'msg': result.get('action_error_message'),
            }
            return Response(response, status=status.HTTP_200_OK)

        if not result.get('user_exists', True):
            response = {
                'success':
                True,
                'msg':
                "User ({0}) has no WiFi profile on AAA".format(
                    adsl_subscriber),
                'user_exists':
                False
            }
            return Response(response, status=status.HTTP_200_OK)

        services = result.get('services')
        if not services:
            response = {'success': True, 'msg': ""}
            return Response(response, status=status.HTTP_200_OK)
        service = services[0]
        logger.debug(
            "Removing WiFi service (%s) for user (%s), transaction ID: ",
            service, wifi_subscriber, transaction_id)

        result = ldap_client.remove_service(wifi_subscriber,
                                            service,
                                            is_adsl=False)
        response = {
            'success': result['action_result'],
            'msg': result.get('action_error_message')
        }
        if not response['success']:
            return Response(response, status=status.HTTP_200_OK)
        log_action(inspect.stack()[0][3],
                   request,
                   response,
                   transaction_id=transaction_id)
        ldap_client.disconnect()
        return Response(response, status=status.HTTP_200_OK)
Beispiel #12
0
def delete_option_pack(request):
    user_name = request.POST['userName'].encode('utf-8').strip()
    transaction_id = request.POST['transactionId'].encode('utf-8').strip()
    ldap_client = LDAPClient()
    result = ldap_client.delete_option_pack(user_name)
    response = {
        'success': result['action_result'],
        'msg': result.get('action_error_message'),
    }
    log_action(inspect.stack()[0][3],
               request,
               response,
               transaction_id=transaction_id)
    ldap_client.disconnect()
    return HttpResponse(json.dumps(response), content_type="application/json")
Beispiel #13
0
def reset_session(request):
    user_name = request.POST['userName'].encode('utf-8').strip()
    transaction_id = request.POST['transactionId'].encode('utf-8').strip()
    logger.debug("Resetting session for user (%s), transaction id: ",
                 user_name, transaction_id)

    response = {
        'success': True,
        'msg': "",
    }

    log_action(inspect.stack()[0][3],
               request,
               response,
               transaction_id=transaction_id)
    return HttpResponse(json.dumps(response), content_type="application/json")
Beispiel #14
0
def check_user_exists(request):
    user_name = request.GET['userName'].encode('utf-8').strip()
    transaction_id = request.GET['transactionId'].encode('utf-8').strip()
    ldap_client = LDAPClient()
    result = ldap_client.check_user_exists(user_name)
    response = {
        'success': False if result.get('user_exists') is None else True,
        'msg': result.get('action_error_message'),
        'user_exists': result.get('user_exists')
    }
    log_action(inspect.stack()[0][3],
               request,
               response,
               transaction_id=transaction_id)
    ldap_client.disconnect()
    return HttpResponse(json.dumps(response), content_type="application/json")
Beispiel #15
0
    def get(self, request, adslUserName, format=None):
        """returns wifi service assigned to user"""
        serializer = WifiSubscriberSerializer(data=request.query_params,
                                              is_get=True)
        if not serializer.is_valid():
            return send_404_error_message(serializer)

        adsl_subscriber = adslUserName.strip("/ ")
        wifi_subscriber = ADSL_PATTERN.sub(r"\[email protected]",
                                           adsl_subscriber)
        transaction_id = serializer.validated_data['transactionId'].encode(
            'utf-8').strip()

        ldap_client = LDAPClient()
        result = ldap_client.get_subscriber_services(wifi_subscriber)

        if not result['action_result']:
            response = {
                'success': result['action_result'],
                'msg': result.get('action_error_message')
            }
            return Response(response, status=status.HTTP_200_OK)

        if not result.get('user_exists', True):
            response = {
                'success':
                True,
                'msg':
                "User ({0}) has no WiFi profile on AAA".format(
                    adsl_subscriber),
                'user_exists':
                False
            }
            return Response(response, status=status.HTTP_200_OK)

        services = result.get('services') or []
        response = {
            'success': result['action_result'],
            'msg': result.get('action_error_message'),
            'services': services
        }
        log_action(inspect.stack()[0][3],
                   request,
                   response,
                   transaction_id=transaction_id)
        ldap_client.disconnect()
        return Response(response, status=status.HTTP_200_OK)
Beispiel #16
0
def create_or_change_ldap_service(request):
    form = CreateOrChangeForm(request.POST)
    if not form.is_valid():
        error_msg = ""
        for k, v in form.errors.items():
            error_msg += "%s: %s\n" % (k, ", ".join(v))
        return HttpResponse(json.dumps({
            'success': True,
            'msg': error_msg,
            'form_error': True
        }),
                            content_type="application/json")

    user_name = form.cleaned_data['userName'].encode('utf-8').strip()
    service_name = form.cleaned_data['serviceName'].encode('utf-8').strip()
    transaction_id = form.cleaned_data['transactionId'].encode('utf-8').strip()

    logger.debug(
        "Creating or changing LDAP service (%s) for user (%s), transaction ID: ",
        service_name, user_name, transaction_id)
    ldap_client = LDAPClient()
    result = ldap_client.add_or_change_service(
        user_name, service_name, request_params=form.cleaned_data)
    if not result.get('user_exists', True):
        response = {
            'success': True,
            'msg': "User ({0}) has no profile on AAA".format(user_name),
            'user_exists': False
        }
        log_action(inspect.stack()[0][3],
                   request,
                   response,
                   transaction_id=transaction_id)
        ldap_client.disconnect()
        return HttpResponse(json.dumps(response),
                            content_type="application/json")

    response = {
        'success': result['action_result'],
        'msg': result.get('action_error_message'),
    }
    log_action(inspect.stack()[0][3],
               request,
               response,
               transaction_id=transaction_id)
    ldap_client.disconnect()
    return HttpResponse(json.dumps(response), content_type="application/json")
Beispiel #17
0
def get_ldap_services(request):
    user_name = request.GET['userName'].encode('utf-8').strip()
    transaction_id = request.GET['transactionId'].encode('utf-8').strip()
    ldap_client = LDAPClient()
    result = ldap_client.get_subscriber_services(user_name)
    services = result.get('services') or []
    response = {
        'success': result['action_result'],
        'msg': result.get('action_error_message'),
        'services': services
    }
    log_action(inspect.stack()[0][3],
               request,
               response,
               transaction_id=transaction_id)
    ldap_client.disconnect()
    return HttpResponse(json.dumps(response), content_type="application/json")
Beispiel #18
0
def remove_user(request):
    subscriber_id = request.POST['userName'].encode('utf-8').strip()
    transaction_id = request.POST['transactionId'].encode('utf-8').strip()
    logger.debug("Removing user (%s), transaction id: ", subscriber_id,
                 transaction_id)
    pcrf_client = PCRFClient()
    result = pcrf_client.remove_subscriber(subscriber_id)
    response = {
        'success': result['action_result'],
        'msg': result.get('action_error_message'),
    }

    log_action(inspect.stack()[0][3],
               request,
               response,
               transaction_id=transaction_id)
    return HttpResponse(json.dumps(response), content_type="application/json")
Beispiel #19
0
def _release_session_and_return(session_id, request, fn_name, return_response,
                                transaction_id):
    client = IPTVClient()
    result = client.release_iptv_session(session_id)
    if not result['action_result']:
        response = {
            'success': False,
            'msg': result.get('action_error_message'),
        }
        log_action(fn_name, request, response, transaction_id=transaction_id)

    log_action(fn_name,
               request,
               return_response,
               transaction_id=transaction_id)
    return HttpResponse(json.dumps(return_response),
                        mimetype="application/json")
Beispiel #20
0
def send_start_coa(request):
    subscriber_id = request.POST['userName'].encode('utf-8').strip()
    service_name = request.POST['serviceName'].encode('utf-8').strip()
    logger.debug("Sending Start Coa for Subscriber (%s), Service (%s)",
                 subscriber_id, service_name)
    aaa_client = AAAClient()
    result = aaa_client.send_start_coa(subscriber_id, service_name)
    response = {
        'success': result['action_result'],
        'msg': result.get('action_error_message'),
    }
    log_action(inspect.stack()[0][3],
               request,
               response,
               start_coa=result.get('coa_result'),
               transaction_id=request.POST['transactionId'])
    return HttpResponse(json.dumps(response), content_type="application/json")
Beispiel #21
0
def get_user_by_name(request):
    logger.debug("Getting ip address for username (%s)",
                 request.GET['userName'])
    aaa_client = AAAClient()
    result = aaa_client.get_session_by_name(
        request.GET['userName'].encode('utf-8').strip())
    response = {
        'success': result['action_result'],
        'msg': result.get('action_error_message'),
        'ipAddress': result.get('IpAddress')
    }

    log_action(inspect.stack()[0][3],
               request,
               response,
               transaction_id=request.GET['transactionId'])
    return HttpResponse(json.dumps(response), content_type="application/json")
Beispiel #22
0
    def post(self, request, *args, **kwargs):
        serializer = WifiSubscriberSerializer(data=request.data)
        if not serializer.is_valid():
            return send_404_error_message(serializer)

        adsl_subscriber = serializer.validated_data['adslUserName'].encode(
            'utf-8').strip()
        wifi_subscriber = ADSL_PATTERN.sub(r"\[email protected]",
                                           adsl_subscriber)
        password = serializer.validated_data['password'].encode(
            'utf-8').strip()
        service = serializer.validated_data['serviceName'].encode(
            'utf-8').strip()
        transaction_id = serializer.validated_data['transactionId'].encode(
            'utf-8').strip()

        logger.debug(
            "Creating or changing WiFi service (%s) for user (%s), transaction ID: ",
            service, wifi_subscriber, transaction_id)
        ldap_client = LDAPClient()
        result = ldap_client.add_wifi_service(adsl_subscriber, wifi_subscriber,
                                              service, password)

        if result.get('user_exists', False):
            response = {
                'success':
                True,
                'msg':
                "User ({0}) already has a WiFi profile on AAA".format(
                    adsl_subscriber),
                'user_exists':
                True
            }
            return Response(response, status=status.HTTP_200_OK)

        response = {
            'success': result['action_result'],
            'msg': result.get('action_error_message'),
        }
        log_action(inspect.stack()[0][3],
                   request,
                   response,
                   transaction_id=transaction_id)
        ldap_client.disconnect()
        return Response(response, status=status.HTTP_200_OK)
Beispiel #23
0
def remove_ldap_service(request):
    user_name = request.POST['userName'].encode('utf-8').strip()
    service_name = request.POST['serviceName'].encode('utf-8').strip()
    transaction_id = request.POST['transactionId'].encode('utf-8').strip()
    logger.debug("Removing LDAP service (%s) for user (%s), transaction ID: ",
                 service_name, user_name, transaction_id)
    ldap_client = LDAPClient()
    result = ldap_client.remove_service(user_name, service_name)
    response = {
        'success': result['action_result'],
        'msg': result.get('action_error_message')
    }
    log_action(inspect.stack()[0][3],
               request,
               response,
               transaction_id=transaction_id)
    ldap_client.disconnect()
    return HttpResponse(json.dumps(response), content_type="application/json")
Beispiel #24
0
def remove_iptv_stb(request):
    client = IPTVClient()
    customer_number = request.POST['customerNumber']
    mac_address = request.POST['macAddress']
    transaction_id = request.POST['transactionId']
    result = client.create_iptv_session()
    if not result['action_result']:
        response = {
            'success': False,
            'msg': result.get('action_error_message'),
        }
        log_action(inspect.stack()[0][3],
                   request,
                   response,
                   transaction_id=transaction_id)
        return HttpResponse(json.dumps(response), mimetype="application/json")
    session_id = result['session_id']
    result = client.fetch_tv_subscriptions(session_id, customer_number)
    if not result['action_result']:
        response = {
            'success': False,
            'msg': result.get('action_error_message'),
        }
        return _release_session_and_return(session_id,
                                           request,
                                           fn_name=inspect.stack()[0][3],
                                           return_response=response,
                                           transaction_id=transaction_id)
    if not result['subscription'][0].tvSubscriptionId:
        response = {
            'success': False,
            'msg':
            "Subscriber (%s) has no IPTV subscriptions." % customer_number,
        }
        return _release_session_and_return(session_id,
                                           request,
                                           fn_name=inspect.stack()[0][3],
                                           return_response=response,
                                           transaction_id=transaction_id)

    subscription_id = result['subscription'][0].tvSubscriptionId
    result = client.remove_stb(session_id, subscription_id, customer_number,
                               mac_address)
    if not result['action_result']:
        if "STB" in result['action_error_message'] and "does not exist on subscription" \
        in result['action_error_message']:
            response = {
                'success':
                False,
                'msg':
                "STB (%s) is not assigned to subscriber (%s)" %
                (mac_address, customer_number),
            }
            return _release_session_and_return(session_id,
                                               request,
                                               fn_name=inspect.stack()[0][3],
                                               return_response=response,
                                               transaction_id=transaction_id)
        response = {
            'success': False,
            'msg': result.get('action_error_message'),
        }
        return _release_session_and_return(session_id,
                                           request,
                                           fn_name=inspect.stack()[0][3],
                                           return_response=response,
                                           transaction_id=transaction_id)

    response = {'success': True, 'msg': ''}
    return _release_session_and_return(session_id,
                                       request,
                                       fn_name=inspect.stack()[0][3],
                                       return_response=response,
                                       transaction_id=transaction_id)
Beispiel #25
0
def query_user_info(request):
    client = IPTVClient()
    customer_number = request.GET['customerNumber']
    transaction_id = request.GET['transactionId']
    result = client.create_iptv_session()
    if not result['action_result']:
        response = {
            'success': False,
            'msg': result.get('action_error_message'),
        }
        log_action(inspect.stack()[0][3],
                   request,
                   response,
                   transaction_id=transaction_id)
        return HttpResponse(json.dumps(response), mimetype="application/json")
    session_id = result['session_id']

    result = client.fetch_tv_subscriptions(session_id, customer_number)

    if not result['action_result']:
        response = {
            'success': False,
            'msg': result.get('action_error_message'),
        }
        return _release_session_and_return(session_id,
                                           request,
                                           fn_name=inspect.stack()[0][3],
                                           return_response=response,
                                           transaction_id=transaction_id)

    if not result['subscription'][0] or not result['subscription'][
            0].tvSubscriptionId:
        response = {
            'success': False,
            'msg':
            "Subscriber (%s) has no IPTV subscriptions." % customer_number,
        }
        return _release_session_and_return(session_id,
                                           request,
                                           fn_name=inspect.stack()[0][3],
                                           return_response=response,
                                           transaction_id=transaction_id)
    subscription = result['subscription'][0]
    status = subscription.status
    package = subscription.packages[0].name if len(
        subscription.packages) else None
    stb = subscription.stbs[0].macAddress if hasattr(subscription,
                                                     'stbs') else None

    response = {
        'success': True,
        'msg': '',
        'status': status,
        'package': package,
        'stb': stb
    }
    return _release_session_and_return(session_id,
                                       request,
                                       fn_name=inspect.stack()[0][3],
                                       return_response=response,
                                       transaction_id=transaction_id)
Beispiel #26
0
def create_customer(request):
    client = IPTVClient()
    customer_number = request.POST['customerNumber']
    package_name = request.POST['packageName']
    mac_address = request.POST['macAddress']
    transaction_id = request.POST['transactionId']
    result = client.create_iptv_session()
    if not result['action_result']:
        response = {
            'success': False,
            'msg': result.get('action_error_message'),
        }
        log_action(inspect.stack()[0][3],
                   request,
                   response,
                   transaction_id=transaction_id)
        return HttpResponse(json.dumps(response), mimetype="application/json")
    session_id = result['session_id']

    subscription_result = client.fetch_tv_subscriptions(
        session_id, customer_number)
    if subscription_result['action_result']:
        response = {'success': False, 'msg': 'Subscriber exists.'}
        return _release_session_and_return(session_id,
                                           request,
                                           fn_name=inspect.stack()[0][3],
                                           return_response=response,
                                           transaction_id=transaction_id)

    result = client.create_customer(session_id=session_id,
                                    customer_number=customer_number)

    if not result['action_result'] and not result[
            'action_error_message'].endswith('already exists. '):

        response = {
            'success': False,
            'msg': result.get('action_error_message'),
        }
        return _release_session_and_return(session_id,
                                           request,
                                           fn_name=inspect.stack()[0][3],
                                           return_response=response,
                                           transaction_id=transaction_id)
    result = client.order_tv_subscription(session_id, customer_number,
                                          package_name, mac_address)
    if not result['action_result']:
        client.remove_iptv_customer(session_id, customer_number)
        if "STB" in result[
                'action_error_message'] and "is already on subscription" in result[
                    'action_error_message']:
            order_id = re.findall("[\d]{5}", result['action_error_message'])[0]
            single_subscription_result = client.fetch_tv_subscription(
                session_id, order_id)
            if single_subscription_result['action_result']:
                error_msg = "STB already assigned to subscriber (%s)" % \
                            single_subscription_result['subscription'].customerNumber
            else:
                error_msg = "STB already assigned to another subscriber"
            response = {
                'success': False,
                'msg': error_msg,
            }
            return _release_session_and_return(session_id,
                                               request,
                                               fn_name=inspect.stack()[0][3],
                                               return_response=response,
                                               transaction_id=transaction_id)

        response = {
            'success': False,
            'msg': result.get('action_error_message'),
        }
        return _release_session_and_return(session_id,
                                           request,
                                           fn_name=inspect.stack()[0][3],
                                           return_response=response,
                                           transaction_id=transaction_id)

    response = {'success': True, 'msg': ""}
    return _release_session_and_return(session_id,
                                       request,
                                       fn_name=inspect.stack()[0][3],
                                       return_response=response,
                                       transaction_id=transaction_id)