Пример #1
0
    def handle(self, *args, **options):
        email = input('Set email: ')
        password = input('Set password: '******'Company name: ')
        if not email or not password or not company_name:
            raise ValueError('Please, set correct input values.')
        try:
            validators.validate_email(email)
        except exceptions.ValidationError:
            print("Enter valid email address.")
        try:
            with transaction.atomic():

                # create user from input info
                email = email.lower()
                customer = Customer(email=email)
                customer.set_password(password)
                customer.save()

                # create User's profile and set all needed info regarding redshift output storage
                profile, created = Profile.objects.get_or_create(
                    user=customer, defaults={"company_name": company_name})
                profile.rs_username = profile.username_generator()
                profile.rs_password = profile.password_generator()
                profile.save()

                # prepare DB in redshift output storage for newly created user
                self.prepare_rs_db(user_info=profile)
        except IntegrityError:
            print("User or profile entry already exists.")
Пример #2
0
 def create(self, validated_data):
     customer = Customer(
         email=validated_data['email'],
         nickname=validated_data['nickname'],
         shipping_address=validated_data['shipping_address'],
     )
     customer.set_password(validated_data['password'])
     customer.save()
     return customer
def loginView(request):

    if request.method == 'POST': # If the form has been submitted...
        obj = Customer()
        email = request.POST.get('email')
        password = request.POST.get('password')
        if len(email)== 0 or len(password)== 0:
            row = ""
        else:
            obj.set_email(email)
            obj.set_password(password)
            row = obj.getUserAccount()

        print (row)
        if len(row) >0:
            user = obj.authenticateCustomer()
            request.session["user"] = email
            request.session["password"] = password
            request.session["auth"] = True
            request.session["account"] = int(user[0])
            request.session["customer"] = int(user[1])
            cus_ID = int(user[1])
            act_ID = int(user[0])
            obj.set_accountID(act_ID)
            obj.set_customerID(cus_ID)
            allergies = loadAllergies(request)
            preferences = loadPreferences(request)
            user_info = obj.getUserAccount()
            address_info = obj.getUserAddress()
            state =[ sub['state'] for sub in address_info ]
            name = user[2]
            request.session["name"] = name
            print(request.session["name"])
            context = get_userinfo(request)
            lstOrder = lastOrder(request)
            hist = []
            if len(lstOrder) != 0:
                hist = loadOrderHistory(request)
            context.update({'lastOrder':lstOrder,'history':hist,'check_list': allergies,'p_check_list': preferences ,'users': user_info,'addresses': address_info ,'state':state})
            return render(request,'profile.html',context)
        else:
            response = "Invalid Credentials, please try again!"
            obj.set_userAuthenticated(False)
            context = {'response': response, 'alert_flag': True}
            return render(request,'login.html',context)
    context = {'response': ""}
    return render(request,'login.html',context)
def registerView(request):
    if request.method == 'POST': # If the form has been submitted..
        valid = 0
        checkFields = []
        formFields = [] #save form fields
        formFields.append(request.POST.get('firstname'))
        formFields.append(request.POST.get('lastname'))
        formFields.append(request.POST.get('phonenumber'))
        formFields.append(request.POST.get('email'))
        formFields.append(request.POST.get('password'))
        formFields.append(request.POST.get('rpassword'))
        formFields.append(request.POST.get('aptNum'))
        formFields.append(request.POST.get('street'))
        formFields.append(request.POST.get('city'))
        formFields.append(request.POST.get('state'))
        formFields.append(request.POST.get('zip'))

        pas = request.POST.get('password')
        pas_c = request.POST.get('rpassword')
        email = request.POST.get('email')
        if pas == pas_c: #verify that both password and confirmation field match
            valid = 1
            checkFields.append(" ")
        else:
            checkFields.append("Passwords do not match")
        regex = '^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$'
        obj = Customer()
        if (re.search(regex,email)):
            if obj.checkEmailExists(email)== False:
                valid += 1
                checkFields.append(" ")
            else:
                checkFields.append("An account with this email exsists already")
        else:
            checkFields.append("Invalid Email Address please enter a valid email")
        rules = [  #check that password has an upper and lower case letter as well as an number and
        lambda pas: any(x.isupper() for x in pas) or 'upper',
        lambda pas: any(x.islower() for x in pas) or 'lower',
        lambda pas: any(x.isdigit() for x in pas) or 'digit',
        lambda pas: len(pas) >= 7                 or 'length',
        ]
        problems = [p for p in [r(pas) for r in rules] if p != True]
        if len(problems) ==0:
            checkFields.append(" ")
            valid += 1
        else:
            checkFields.append("Password does not meet security requirements")
        check_term = request.POST.getlist('termcond')
        if len(check_term) ==1:
            checkFields.append(" ")
            valid += 1
        else:
            checkFields.append("Please accept terms and conditions!")
        if valid == 4:

            obj.set_firstname(request.POST.get('firstname'))
            obj.set_lastname(request.POST.get('lastname'))
            obj.set_mobile(int(request.POST.get('phonenumber')))
            obj.set_phone(int(request.POST.get('phonenumber')))
            pas = request.POST.get('password')
            obj.set_email(request.POST.get('email'))
            obj.set_password(request.POST.get('password'))
            obj.set_addressName("Main")
            apt = request.POST.get('aptNum')
            print(apt)
            if len(apt) == 0:
                apt = " "
            obj.set_aptnum(apt)
            obj.set_street(request.POST.get('street'))
            obj.set_city(request.POST.get('city'))
            obj.set_state(request.POST.get('state'))
            obj.set_zipcode(int(request.POST.get('zip')))
            user = int(obj.addUserAccount())
            obj.set_accountID(int(user))
            obj.addAddress()
            response = obj.addCustomer()
            context = {'response': response}
            return render(request,'register.html', context)
        else:
            response = "There was an error creating the account. Please see the fields below."
            context = {'response': response,'check_fields': checkFields,'form_fields': formFields, 'alert_flag': True}

            return render(request,'register.html',context)
    else :
        context = {'response': ""}
        return render(request,'register.html',context)
Пример #5
0
 def form_valid(self, form):
     new = Customer()
     new.username = form.cleaned_data['username']
     new.set_password(form.cleaned_data['password1'])
     new.save()
     return super(RegisterView, self).form_valid(form)
Пример #6
0
    def post(self):
        """
        Creates a new customer

        Endpoint: /customer/

        Example Post Body:
        {
            "currency": "USD",
            "email": "*****@*****.**",
            "first_name": "John",
            "last_name": "Smith4",
            "addresses":
              [
                    {
                          "street": "1236 Main Street",
                          "city": "townsville",
                          "zip": "1234",
                          "state": "CA",
                          "country": "USA",
                          "is_primary": "true"
                    },
                    {
                          "street": "1215 Main Street",
                          "city": "townsville",
                          "zip": "500",
                          "state": "CA",
                          "country": "USA"
                    },
                    {
                          "street": "1216 Main Street",
                          "city": "townsville",
                          "zip": "500",
                          "state": "CA",
                          "country": "USA"
                    }
              ]
        }

        {
             "customer": {
                 "addresses": [
                     {
                         "address_id": "224473682041851492125327501325163956867",
                         "city": "townsville",
                         "created_at": "Thu, 10 Jan 2019 03:56:26 GMT",
                         "deleted_at": null,
                         "is_primary": false,
                         "state": "CA",
                         "street": "1215 Main Street",
                         "updated_at": "Thu, 10 Jan 2019 03:56:26 GMT",
                         "zip": "500"
                     },
                     {
                         "address_id": "245608141370371202915656949519861248348",
                         "city": "townsville",
                         "created_at": "Thu, 10 Jan 2019 03:56:26 GMT",
                         "deleted_at": null,
                         "is_primary": true,
                         "state": "CA",
                         "street": "1236 Main Street",
                         "updated_at": "Thu, 10 Jan 2019 03:56:26 GMT",
                         "zip": "1234"
                     },
                     {
                         "address_id": "274242069278329272621665758252140893540",
                         "city": "townsville",
                         "created_at": "Thu, 10 Jan 2019 03:56:26 GMT",
                         "deleted_at": null,
                         "is_primary": false,
                         "state": "CA",
                         "street": "1216 Main Street",
                         "updated_at": "Thu, 10 Jan 2019 03:56:26 GMT",
                         "zip": "500"
                     }
                 ],
                 "created_at": "Thu, 10 Jan 2019 03:56:26 GMT",
                 "currency": "USD",
                 "customer_id": "204987158183621343381078484949153439747",
                 "deleted_at": null,
                 "email": "*****@*****.**",
                 "first_name": "John",
                 "last_name": "Smith4",
                 "last_order_date": null,
                 "links": [
                     {
                         "href": "/customer/204987158183621343381078484949153439747",
                         "rel": "self"
                     }
                 ],
                 "total_spent": 0,
                 "updated_at": "Thu, 10 Jan 2019 03:56:26 GMT"
             },
        "result": "ok"
        }
        """
        customer_json = request.json
        error = best_match(Draft4Validator(schema).iter_errors(customer_json))
        if error:
            return jsonify({"error": error.message}), 400

        store = Store.objects.filter(app_id=request.headers.get('APP-ID'),
                                     deleted_at=None).first()
        existing_customer = Customer.objects.filter(
            email=customer_json.get("email"), store_id=store).first()

        if existing_customer:
            return jsonify({"error": "CUSTOMER_ALREADY_EXISTS"}), 400

        count_is_primary = 0
        if customer_json.get("addresses"):
            for address in customer_json.get("addresses"):
                if address.get("is_primary"):
                    if address.get("is_primary") == "true":
                        count_is_primary += 1
                        if count_is_primary > 1:
                            return jsonify({
                                "error":
                                "MULTIPLE_PRIMARY_ADDRESSES_SUPPLIED"
                            }), 400

        customer = Customer(currency=customer_json.get("currency"),
                            email=customer_json.get("email"),
                            first_name=customer_json.get("first_name"),
                            last_name=customer_json.get("last_name"),
                            customer_id=str(uuid.uuid4().int),
                            store_id=store).save()

        customer.set_password(customer_json.get("password"))

        if customer_json.get("addresses"):
            addresses = []
            for address in customer_json.get("addresses"):
                is_primary = False
                if address.get("is_primary"):
                    is_primary = True if address.get(
                        "is_primary").lower() == "true" else False
                address = Address(street=address.get("street"),
                                  city=address.get("city"),
                                  zip=address.get("zip"),
                                  state=address.get("state"),
                                  country=address.get("country"),
                                  is_primary=is_primary,
                                  customer_id=customer,
                                  address_id=str(uuid.uuid4().int))
                addresses.append(address)

            for add in addresses:
                Address.objects.insert(add)

        response = {"result": "ok", "customer": customer_obj(customer)}
        return jsonify(response), 201