Пример #1
0
def verify_phone_number(request, domain, couch_user_id):
    """
    phone_number cannot be passed in the url due to special characters
    but it can be passed as %-encoded GET parameters
    """
    if 'phone_number' not in request.GET:
        return Http404('Must include phone number in request.')
    phone_number = urllib.unquote(request.GET['phone_number'])
    user = CouchUser.get_by_user_id(couch_user_id, domain)

    try:
        # send verification message
        smsverify.send_verification(domain, user, phone_number)

        # create pending verified entry if doesn't exist already
        user.save_verified_number(domain, phone_number, False, None)
    except BadSMSConfigException:
        messages.error(request, "Could not verify phone number. It seems there is no usable SMS backend.")

    if user.is_commcare_user():
        from corehq.apps.users.views.mobile import EditCommCareUserView
        redirect = reverse(EditCommCareUserView.urlname, args=[domain, couch_user_id])
    else:
        redirect = reverse(EditMyAccountDomainView.urlname, args=[domain])
    return HttpResponseRedirect(redirect)
Пример #2
0
def verify_phone_number(request, domain, couch_user_id):
    """
    phone_number cannot be passed in the url due to special characters
    but it can be passed as %-encoded GET parameters
    """
    if 'phone_number' not in request.GET:
        return Http404('Must include phone number in request.')
    phone_number = urllib.unquote(request.GET['phone_number'])
    user = CouchUser.get_by_user_id(couch_user_id, domain)

    try:
        # send verification message
        smsverify.send_verification(domain, user, phone_number)

        # create pending verified entry if doesn't exist already
        user.save_verified_number(domain, phone_number, False, None)
    except BadSMSConfigException:
        messages.error(
            request,
            "Could not verify phone number. It seems there is no usable SMS backend."
        )

    if user.is_commcare_user():
        from corehq.apps.users.views.mobile import EditCommCareUserView
        redirect = reverse(EditCommCareUserView.urlname,
                           args=[domain, couch_user_id])
    else:
        redirect = reverse(EditMyAccountDomainView.urlname, args=[domain])
    return HttpResponseRedirect(redirect)
Пример #3
0
def verify_phone_number(request, domain, couch_user_id):
    """
    phone_number cannot be passed in the url due to special characters
    but it can be passed as %-encoded GET parameters
    """
    if 'phone_number' not in request.GET:
        return Http404('Must include phone number in request.')
    phone_number = urllib.unquote(request.GET['phone_number'])
    user = CouchUser.get_by_user_id(couch_user_id, domain)

    # send verification message
    smsverify.send_verification(domain, user, phone_number)

    # create pending verified entry if doesn't exist already
    user.save_verified_number(domain, phone_number, False, None)

    return HttpResponseRedirect(reverse("user_account", args=(domain, couch_user_id )))
Пример #4
0
def verify_phone_number(request, domain, couch_user_id):
    """
    phone_number cannot be passed in the url due to special characters
    but it can be passed as %-encoded GET parameters
    """
    if 'phone_number' not in request.GET:
        return Http404('Must include phone number in request.')
    phone_number = urllib.unquote(request.GET['phone_number'])
    user = CouchUser.get_by_user_id(couch_user_id, domain)

    # send verification message
    smsverify.send_verification(domain, user, phone_number)

    # create pending verified entry if doesn't exist already
    user.save_verified_number(domain, phone_number, False, None)

    return HttpResponseRedirect(reverse("user_account", args=(domain, couch_user_id )))
Пример #5
0
def handle(verified_contact, text, msg):
    domain = msg.domain
    if not domain:
        return False

    if not EWSGhanaConfig.for_domain(domain):
        return False

    if not verified_contact:
        return False

    user = verified_contact.owner

    if not verified_contact.verified:
        if not process_verification(verified_contact, msg, VERIFICATION_KEYWORDS):
            logged_event = MessagingEvent.get_current_verification_event(
                domain, verified_contact.owner_id, verified_contact.phone_number)
            send_verification(domain, user, verified_contact.phone_number, logged_event)
        return True

    args = text.split()
    if not args:
        send_sms_to_verified_number(verified_contact, unicode(INVALID_MESSAGE))
        return True
    keyword = args[0]
    args = args[1:]
    params = {
        'user': user,
        'domain': domain,
        'args': args,
        'msg': msg,
        'verified_contact': verified_contact
    }

    def not_function(word):
        if args and re.match("del", word):
            return NotDeliveredHandler
        elif args and re.match("sub", word):
            return NotSubmittedHandler
        return None

    handlers = {
        ('help', ): HelpHandler,
        ('reminder', ): ReminderOnOffHandler,
        ('language', 'lang', 'lugha'): LanguageHandler,
        ('yes', 'no', 'y', 'n'): RequisitionHandler,
        ('undo', 'replace', 'revoke'): UndoHandler,
        ('soh',): SOHHandler,
        ('not',): not_function(args[0]) if args else None,
        ('rec', 'receipts', 'received'): ReceiptsHandler
    }

    def choose_handler(keyword):
        for k, v in handlers.iteritems():
            if keyword.lower() in k:
                return v
        return None

    handler_class = choose_handler(keyword)
    handler = handler_class(**params) if handler_class else None

    if handler:
        if args:
            return handler.handle()
        else:
            handler.help()
            return True
    else:
        return SOHHandler(**params).handle()