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)
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)
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 )))
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()