def authorize_phone_number(self, phone_number_str): try: phone_number = PhoneNumber.objects.get(phone_number=phone_number_str) except PhoneNumber.DoesNotExist: new_user = User.objects.create_user() phone_number = self.create( phone_number=phone_number_str, user=new_user, date_created=timezone.now(), verified=False ) new_user.pick_anonymous_avatar(phone_number_str) new_user.save() user_avatar_changed.send(sender=self, user=new_user) confirmation_key = generate_key() if is_test_number(phone_number.phone_number): confirmation_code = "6666" else: confirmation_code = crypto.get_random_string(4, string.digits) PhoneNumberConfirmSMSCode.objects.get_or_create( phone_number=phone_number, confirmation_key=confirmation_key, confirmation_code=confirmation_code, date_created=timezone.now(), ) if not settings.DEBUG: send_sms(phone_number.phone_number, "Your Glance Verification Code: " + confirmation_code) return confirmation_key
def request_sms(request): if request.method != 'POST': return HttpResponseNotAllowed(['POST']) partner = request.POST.get('partner') phone_number = request.POST.get('phone_number') default_country = request.POST.get('default_country') if not partner or not phone_number or not default_country: return HttpResponse('Invalid POST') try: number = phonenumbers.parse(phone_number, default_country) except phonenumbers.phonenumberutil.NumberParseException as e: return HttpResponse(unicode(e)) domain = u'https://useglance.com' link = domain + reverse('get_app') + u'?' + partner message = u'\u05dc\u05d4\u05d5\u05e8\u05d3\u05ea \u05d4\u05d0\u05e4\u05dc\u05d9\u05e7\u05e6\u05d9\u05d9\u05d4 \u05dc\u05d7\u05e5\u003a' sms_text = message + u'\n' + link phone_number_str = phonenumbers.format_number(number, phonenumbers.PhoneNumberFormat.E164) send_sms(phone_number_str, sms_text) return HttpResponse('SMS Sent')
def invite_phone_number( self, inviter, phone_number_str, nickname, date_invited, sms_message_formatter, sms_analytics_event_name, sms_analytics_event_properties, ): """ phone_number_str: Must be formatted as international E164 Returns the user """ try: phone_number = PhoneNumber.objects.get(phone_number=phone_number_str) if phone_number.verified: return phone_number.user except PhoneNumber.DoesNotExist: new_user = User.objects.create_user(nickname=nickname) phone_number = PhoneNumber.objects.create( phone_number=phone_number_str, user=new_user, date_created=date_invited, verified=False ) new_user.pick_anonymous_avatar(phone_number_str) new_user.save() user_avatar_changed.send(sender=self, user=new_user) link_code_object, created = PhoneNumberLinkCode.objects.get_or_create( phone_number=phone_number, defaults={ "invite_code": PhoneNumberLinkCode.generate_invite_code(), "inviting_user": inviter, "date_created": date_invited, "was_visited": False, }, ) inviter_phone = inviter.get_primary_phone_number() if inviter_phone: sender_phone = inviter_phone.phone_number else: sender_phone = None message = sms_message_formatter(link_code_object) invite_url_prefix = "https://i.useglance.com" send_sms( phone_number.phone_number, message + "\n" + link_code_object.get_invite_page(invite_url_prefix), sender_phone, ) track_event(link_code_object.phone_number.user, sms_analytics_event_name, sms_analytics_event_properties) return link_code_object.phone_number.user
def post(self, request): serializer = self.serializer_class(data=request.DATA) if not serializer.is_valid(): return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) phone_number_str = serializer.object['phone_number_str'] template = "Welcome to Glance! Click here and start enjoying sharing albums with your friends: %s" sms_text = template % reverse('get_app', subdomain='www', scheme='https') send_sms(phone_number_str, sms_text) return Response(status=204)