示例#1
0
    def create_user_after_request(self, *args, **kwargs):
        try:
            new_user = User.objects.create(
                first_name=self.name,
                mobile_phone=clear_contact_phone(self.mobile_phone_number),
                turnes_person_id=self.turnes_person_id)
        except Exception:
            return False
        new_user_password = get_random_string(length=8)
        new_user.set_password(new_user_password)
        new_user.save()
        print("new_user_password", new_user_password)
        try:
            m_sid = send_password(to=clear_contact_phone(
                self.mobile_phone_number),
                                  password=new_user_password)
        except Exception:
            new_user.delete()
            return False

        # m_sid = send_password(
        #     to="+380631280489",
        #     password=new_user_password
        # )
        if m_sid:
            self.message_sid = m_sid

        return True
示例#2
0
def create_user_after_request(sender, instance, **kwargs):
    if instance.turnes_person_id:
        new_user = User.objects.create(
            first_name=instance.name,
            mobile_phone=clear_contact_phone(instance.mobile_phone_number),
            turnes_person_id=instance.turnes_person_id
        )
        new_user_password = get_random_string(length=8)
        new_user.set_password(new_user_password)
        new_user.save()

        # phonxis twilio account
        # account_sid = "AC37cb13a1d11a145f195479dfc148253b"
        # auth_token = "8893689c10c3f0204f39c18d6dac4be3"
        # twilio_phone = "+19132760090"

        # main twilio account
        # account_sid = "AC37cb13a1d11a145f195479dfc148253b"
        # auth_token = "8893689c10c3f0204f39c18d6dac4be3"
        # twilio_phone = "+19132760090"

        client = Client(
            settings.TWILIO_ACCOUNT_SID,
            settings.TWILIO_AUTH_TOKEN
        )
        message = client.messages.create(
            body="Ваш пароль на сайте exf.in.ua: {0}".format(new_user_password),
            from_=settings.TWILIO_PHONE_NUMBER,
            # to="+380631280489"
            to="+{0}".format(clear_contact_phone(instance.mobile_phone_number))
        )
示例#3
0
def mobile_phone_number(value):
    clean_phone = clear_contact_phone(value)

    if not len(clean_phone) == 12:
        raise ValidationError(
            _(u"Введите правильный номер телефона")
        )
示例#4
0
文件: forms.py 项目: kshutashvili/mfo
    def clean(self):
        cleaned_data = super(RegisterNumberForm, self).clean()

        phone = cleaned_data.get('phone')

        valid_phone = clear_contact_phone(phone)

        cleaned_data["phone"] = valid_phone

        return cleaned_data
示例#5
0
def make_user_password(user_obj):
    new_user_password = get_random_string(length=8)
    user_obj.set_password(new_user_password)
    user_obj.save()

    client = Client(settings.TWILIO_ACCOUNT_SID, settings.TWILIO_AUTH_TOKEN)
    message = client.messages.create(
        body="Ваш пароль на сайте expressfinance.com.ua: {0}".format(
            new_user_password),
        from_=settings.TWILIO_PHONE_NUMBER,
        # to="+{0}".format("380950968326")
        to="+{0}".format(clear_contact_phone(user_obj.mobile_phone)))
    return new_user_password
示例#6
0
def user_login(request, status_message=None):
    if request.method == 'POST':

        data = {
            'mobile_phone':
            clear_contact_phone(request.POST.get('mobile_phone')),
            'password': request.POST.get('password')
        }

        form = LoginForm(data)
        if form.is_valid():
            mobile_phone = form.cleaned_data.get('mobile_phone')
            password = form.cleaned_data.get('password')
            user = authenticate(mobile_phone=mobile_phone, password=password)

            if user is not None:
                login(request, user)

                if request.POST.get('remember_me') is not None:
                    request.session.set_expiry(0)

                # checking if user changed password which received from SMS
                if user.changed_default_password:
                    return HttpResponseRedirect(reverse('profile'))
                # elif not user.ready_for_turnes:
                #     return HttpResponseRedirect(reverse('questionnaire'))
                else:
                    # if no, redirects to change password page
                    return HttpResponseRedirect(reverse('set_password'))
            else:
                status_message = _("Неправильный номер или пароль")
                return render(request, 'enter.html', {
                    'form': LoginForm(),
                    'status_message': status_message
                })
        else:
            status_message = _("Неправильный номер или пароль")
            return render(request, 'enter.html', {
                'form': LoginForm(),
                'status_message': status_message
            })
    elif request.method == 'GET':
        if request.user.is_authenticated:
            return HttpResponseRedirect(reverse('profile'))
        form = LoginForm()
        return render(request, 'enter.html', {
            'form': form,
            'status_message': status_message
        })
示例#7
0
    def save(self, *args, **kwargs):
        # search previous Requests with current contract_num
        if RequestPersonalArea.objects.filter(
                contract_num=self.contract_num).exists():
            qs = RequestPersonalArea.objects.filter(
                contract_num=self.contract_num)
            self.has_account = qs[0].has_account
            qs.delete()

        # get Turnes ID for current contract_num
        self.turnes_person_id = get_person_id(contract_num=self.contract_num,
                                              phone=clear_contact_phone(
                                                  self.mobile_phone_number))
        print("turnes_person_id", self.turnes_person_id)
        if self.turnes_person_id and not self.has_account:
            self.has_account = self.create_user_after_request()

        super(RequestPersonalArea, self).save(*args, **kwargs)
示例#8
0
def bankid_getdata(request):
    """
        Function gets encoded data from BankID,
        decode it and save into models
    """
    access_token = request.session.get('access_token', None)  # pop
    refresh_token = request.session.get('refresh_token', None)  # pop
    BankIDLog.objects.create(type='BankIDGetData',
                             subtype="access_token",
                             message=access_token)
    BankIDLog.objects.create(type='BankIDGetData',
                             subtype="refresh_token",
                             message=refresh_token)

    if settings.DEBUG:
        url = "https://bankid.privatbank.ua/ResourceService/checked/data"
    else:
        url = "https://biprocessing.org.ua/ResourceService/checked/data"

    headers = {
        "Content-Type":
        "application/json",
        "Authorization":
        "Bearer {access_token}, Id {client_id}".format(
            access_token=access_token, client_id=settings.BANKID_CLIENT_ID),
        "Accept":
        "application/json"
    }

    # Describe which data will be requested
    data = {
        "type":
        "physical",
        "fields": [
            "firstName", "middleName", "lastName", "phone", "inn", "clId",
            "clIdText", "birthDay", "email", "sex", "resident",
            "dateModification"
        ],
        "scans": [{
            "type":
            "passport",
            "fields": ["link", "dateCreate", "extension", "dateModification"]
        }, {
            "type":
            "zpassport",
            "fields": ["link", "dateCreate", "extension", "dateModification"]
        }, {
            "type":
            "inn",
            "fields": ["link", "dateCreate", "extension", "dateModification"]
        }, {
            "type":
            "personalPhoto",
            "fields": ["link", "dateCreate", "extension", "dateModification"]
        }],
        "addresses": [{
            "type":
            "factual",
            "fields": [
                "country", "state", "area", "city", "street", "houseNo",
                "flatNo", "dateModification"
            ]
        }, {
            "type":
            "birth",
            "fields": [
                "country", "state", "area", "city", "street", "houseNo",
                "flatNo", "dateModification"
            ]
        }],
        "documents": [{
            "type":
            "passport",
            "fields": [
                "series", "number", "issue", "dateIssue", "dateExpiration",
                "issueCountryIso2", "dateModification"
            ]
        }, {
            "type":
            "zpassport",
            "fields": [
                "series", "number", "issue", "dateIssue", "dateExpiration",
                "issueCountryIso2", "dateModification"
            ]
        }]
    }

    BankIDLog.objects.create(type='BankIDGetData',
                             subtype="request headers",
                             message=headers)
    BankIDLog.objects.create(type='BankIDGetData',
                             subtype="request data",
                             message=json.dumps(data))
    BankIDLog.objects.create(type='BankIDGetData',
                             subtype="request URL",
                             message=url)

    r = requests.post(url=url, headers=headers, data=json.dumps(data))

    BankIDLog.objects.create(type='BankIDGetData',
                             subtype="response",
                             message=r.json())

    response_json = r.json()
    if 'customer' in response_json.keys():
        decrypted = decrypt_data(response_json)
    else:
        BankIDLog.objects.create(type='BankIDGetData',
                                 subtype="error",
                                 message="response not contain 'customer' key")
        return HttpResponseRedirect(reverse_lazy('main'))

    BankIDLog.objects.create(type='BankIDGetData',
                             subtype="decrypted",
                             message=decrypted)

    # Check if user with this mobile_phone exists
    user_exists = User.objects.filter(
        mobile_phone=clear_contact_phone(decrypted["customer"]["phone"]))
    if user_exists:
        return HttpResponseRedirect(reverse_lazy('login'))

    user = User.objects.create(mobile_phone=clear_contact_phone(
        decrypted["customer"]["phone"]),
                               ready_for_turnes=False)
    # Set user password, send SMS with it
    password = make_user_password(user)
    # Authenticate user
    auth_user = authenticate(mobile_phone=user.mobile_phone, password=password)

    # Save decrypted data to models:
    # Customer, Document, Address, ScanDocument
    # and copy this data to Questionnaire model
    local_save(decrypted, user, headers)

    if auth_user is not None:
        login(request, auth_user)
        return HttpResponseRedirect(reverse_lazy('questionnaire'))

    return HttpResponseRedirect(reverse_lazy('main'))
示例#9
0
    def post(self, *args, **kwargs):
        anketa_exists = Questionnaire.objects.filter(
            user=self.request.user).exists()

        if not anketa_exists:
            if self.request.user.is_authenticated:
                form = RegisterPersonalForm(data=self.request.POST)
                if form.is_valid():

                    anketa = form.save(commit=False)
                    anketa.user = self.request.user
                    anketa.save()
                    return JsonResponse({
                        'result': 'ok',
                        'errors': None
                    },
                                        safe=False)
                else:

                    return JsonResponse(
                        {
                            'result': 'error',
                            'errors': form.errors
                        },
                        safe=False,
                        status=400)
            else:
                return JsonResponse({
                    'result': 'error',
                    'errors': form.errors
                },
                                    safe=False,
                                    status=400)
        else:
            data_dict = self.request.POST.dict()
            if 'switchResidence' in data_dict:
                data_dict.pop('switchResidence')
            if 'the-same' in data_dict:
                data_dict.pop('the-same')
            if 'step' in data_dict:
                data_dict.pop('step')
            if 'registration_county_switch' in data_dict:
                data_dict.pop('registration_county_switch')
            if 'residence_county_switch' in data_dict:
                data_dict.pop('residence_county_switch')
            if 'switchRegistration' in data_dict:
                data_dict.pop('switchRegistration')
            if 'birthday_date' in data_dict:
                if data_dict['birthday_date']:
                    try:
                        data_dict['birthday_date'] = parse(
                            data_dict.get('birthday_date', '9999-01-01'))
                    except Exception:
                        data_dict['birthday_date'] = parse('9999-01-01')
            if 'passport_date' in data_dict:
                if data_dict['passport_date']:
                    try:
                        data_dict['passport_date'] = parse(
                            data_dict.get('passport_date', '9999-01-01'))
                    except Exception:
                        data_dict['passport_date'] = parse('9999-01-01')
            if 'passport_outdate' in data_dict:
                if data_dict['passport_outdate']:
                    try:
                        data_dict['passport_outdate'] = parse(
                            data_dict.get('passport_outdate', '9999-01-01'))
                    except Exception:
                        data_dict['passport_outdate'] = parse('9999-01-01')
                else:
                    data_dict['passport_outdate'] = '9999-01-01'
            if 'has_criminal_record' in data_dict:
                if data_dict['has_criminal_record'] == 'off':
                    data_dict['has_criminal_record'] = False
                else:
                    data_dict['has_criminal_record'] = True

            instance_qs = Questionnaire.objects.filter(user=self.request.user)

            f = RegisterPersonalForm(data=data_dict, instance=instance_qs[0])
            if f.is_valid():
                instance_qs.update(**data_dict)
            else:
                return JsonResponse({
                    'result': 'error',
                    'errors': f.errors
                },
                                    safe=False,
                                    status=400)

            if int(self.request.POST.get("step", 0)) == 5:
                resp = check_blacklist(
                    itn=self.request.user.anketa.itn,
                    mobile_phone=clear_contact_phone(
                        self.request.user.anketa.mobile_phone),
                    passseria=self.request.user.anketa.passport_code[:2]
                    if self.request.user.anketa.passport_code else 'АА',
                    passnumber=self.request.user.anketa.passport_code[2:]
                    if self.request.user.anketa.passport_code else 000000,
                )

                if 'in_blacklist' in resp:
                    if resp['in_blacklist']:
                        user = User.objects.filter(id=self.request.user.id)[0]
                        anketa_qs = Questionnaire.objects.filter(
                            user=user).update(blacklist=True)
                        #
                        user.active = False
                        user.ready_for_turnes = False
                        user.save()
                        callback_fail = CallbackFailForm.get_solo()
                        redirect_url = reverse('fail',
                                               kwargs={
                                                   'id_mess':
                                                   callback_fail.success.id,
                                                   'redirect_url':
                                                   'main'
                                               })
                        return JsonResponse(
                            {
                                'result': 'ok',
                                'errors': None,
                                'url': redirect_url
                            },
                            safe=False)
                    else:
                        user = User.objects.filter(id=self.request.user.id)[0]
                        # user.ready_for_turnes = True
                        user.save()

                save_anketa_turnes(anketa=self.request.user.anketa)

                return JsonResponse(
                    {
                        'result': 'ok',
                        'errors': None,
                        'url': reverse('profile')
                    },
                    safe=False)

        return JsonResponse({'result': 'ok', 'errors': None}, safe=False)
示例#10
0
def request_callback(request):
    if request.method == 'POST':
        bid_id = request.POST.get("bid_id", None)
        contact_phone = request.POST.get("contact_phone")
        clean_phone = clear_contact_phone(contact_phone)

        # linkprofit parameters
        wm_id = ''
        if 'wm_id' in request.session:
            wm_id = request.session['wm_id']
            del request.session['wm_id']
        any_param = ''
        if 'any_param' in request.session:
            any_param = request.session['any_param']
            del request.session['any_param']

        # salesdoubler parameters
        aff_sub = ''
        if 'aff_sub' in request.session:
            aff_sub = request.session['aff_sub']
            del request.session['aff_sub']
        aff_id = ''
        if 'aff_id' in request.session:
            aff_id = request.session['aff_id']
            del request.session['aff_id']

        # doaffilate parameters (w/o utm_source, utm_medium and utm_campaign)
        v = ''
        if 'v' in request.session:
            v = request.session['v']
            del request.session['v']

        if bid_id:
            # if Bid has been created in save_credit_request function
            if Bid.objects.filter(id=int(bid_id)).exists():
                bid = Bid.objects.get(id=int(bid_id))
                bid.contact_phone = clean_phone
                bid.name = request.POST.get("client_name")
                bid.save()
                process_bid(bid)
                request.session['bid_id'] = bid.id
            else:
                new_bid = Bid.objects.create(
                    city=request.POST.get('city'),
                    name=request.POST.get("client_name"),
                    contact_phone=clean_phone,
                    wm_id=wm_id,
                    any_param=any_param,
                    aff_sub=aff_sub,
                    aff_id=aff_id,
                    v=v)
                new_bid.save()
                process_bid(new_bid)
                request.session['bid_id'] = new_bid.id
        else:
            new_bid = Bid.objects.create(city=request.POST.get('city'),
                                         name=request.POST.get("client_name"),
                                         contact_phone=clean_phone,
                                         wm_id=wm_id,
                                         any_param=any_param,
                                         aff_sub=aff_sub,
                                         aff_id=aff_id,
                                         v=v)
            new_bid.save()
            process_bid(new_bid)
            request.session['bid_id'] = new_bid.id

        # for NEXT COMMITS
        # return sms(request, "+380950968326", reverse('callback_verify'))

        callback_success = CallbackSuccessForm.get_solo()
        url = reverse('success',
                      kwargs={
                          'id_mess': callback_success.success.id,
                          'redirect_url': 'main'
                      })
        return HttpResponseRedirect(url)

    return HttpResponseNotAllowed(['POST'])