def push_sms_to_queue(*args, **kwargs):
    """
       A sqs tasks that pulls sms from the queue
       and process it.
       Note: we have done we middleware sms client
       setting here as these are not set in the worker machine.
       and extra log can be removed after smooth trial
    """
    brand = kwargs.get("brand", None)
    phone_number = kwargs.get("phone_number", None)
    message = kwargs.get("message", None)
    source_client = kwargs.get("__gm_source", None)

    logger.info("brand:{0} , phone: {1}, message: {2} source: {3}".format(brand, phone_number, message, source_client))
    try:
        BRAND = settings.__dict__["_wrapped"].__class__.BRAND = make_tls_property()
        BRAND.value = brand
        SMS_CLIENT = settings.__dict__["_wrapped"].__class__.SMS_CLIENT = make_tls_property()

        logger.info("ENV: {0}".format(settings.ENV))
        if settings.ENV in ["local", "test", "staging"]:
            SMS_CLIENT.value = None
            return

        if source_client == settings.SMS_CLIENT_DETAIL["KAP"]["params"]:
            SMS_CLIENT.value = "KAP"
        else:
            try:
                SMS_CLIENT.value = settings.BRAND_SMS_GATEWAY.get(settings.BRAND)
            except:
                SMS_CLIENT.value = "AIRTEL"
        response = sms_processing(phone_number, message, brand)
        logger.info("[push_sms_to_queue]: {0}".format(response))
    except Exception as ex:
        logger.info("[Exception in push_sms_to_queue]: {0}".format(ex))
 def render_sms(self, request, **kwargs):
     phone_number = ""
     message = ""
     if request.POST.get('text'):
         message = request.POST.get('text')
         phone_number = request.POST.get('phoneNumber')
     elif request.GET.get('cli'):
         message = request.GET.get('msg')
         phone_number = request.GET.get('cli')
     elif request.POST.get("advisorMobile"):
         phone_number = request.POST.get('advisorMobile')
         customer_id = request.POST.get('customerId')
         if request.POST.get('action') == 'validate':
             LOGGER.info('Validating the service coupon for customer {0}'.format(customer_id))
             odo_read = request.POST.get('odoRead')
             service_type = request.POST.get('serviceType')
             message = '{3} {0} {1} {2}'.format(customer_id, odo_read,
                 service_type, settings.ALLOWED_KEYWORDS['check'].upper())
             LOGGER.info('Message to send: ' + message)
         else:
             ucn = request.POST.get('ucn')
             LOGGER.info('Terminating the service coupon {0}'.format(ucn))
             message = '{2} {0} {1}'.format(customer_id,
                 ucn, settings.ALLOWED_KEYWORDS['close'].upper())
             LOGGER.info('Message to send: ' + message)
     try:    
         to_be_serialized=sms_processing(phone_number, message, settings.BRAND)
     except InvalidKeyWord as ink:
         LOGGER.info("The database failed to perform {0}:{1}".format(
                                         request.POST.get('action'), ink))
         
         send_job_to_queue(send_invalid_keyword_message, {"phone_number":phone_number, "message":ink.template, "sms_client":settings.SMS_CLIENT})
         return HttpBadRequest(json.dumps({'status':False, 'message':ink.template}))
     except Exception as ex:
         LOGGER.info("The database failed to perform {0}:{1}".format(
                                         request.POST.get('action'), ex))
         return HttpBadRequest(json.dumps({'status':False, 'message':ex}))
     return self.create_response(request, data=to_be_serialized)