Example #1
0
    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
Example #2
0
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')
Example #3
0
    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
Example #4
0
    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)