예제 #1
0
 def post(self, request):
     customer = request.session.get('customer')
     if not customer:
         messages.warning(
             request, f'You to have login to check out, please login now.')
         return redirect('login')
     else:
         address = request.POST.get('address')
         phone = request.POST.get('phone')
         cart = request.session.get('cart')
         products = Product.get_products_by_id(list(cart.keys()))
         for product in products:
             order = Order(customer=Customer(id=customer),
                           product=product,
                           price=product.price,
                           quantity=cart.get(str(product.id)),
                           address=address,
                           phone=phone)
             request.session['cart'] = {}
             order.placeOrder()
         messages.success(
             request,
             f'Thank you for purchasing!!! Please click on Orders tab to view your orders.'
         )
         return redirect('cart')
예제 #2
0
 def post(self, request):
     address = request.POST.get('address')
     phone = request.POST.get('phone')
     customer = request.session.get('customer')
     cart = request.session.get('cart')
     products = Product.get_products_by_id(list(cart.keys()))
     for product in products:
         order = Order(customer=Customer(id=customer),
                       product=product,
                       price=product.price,
                       address=address,
                       phone=phone,
                       quantity=cart.get(str(product.id)))
         order.placeOrder()
         request.session['cart'] = {}
     return redirect('cart')
예제 #3
0
    def post(self, request):
        address = request.POST.get('address')
        phone = request.POST.get('phone')
        customer = request.session.get('customer')
        cart = request.session.get('cart')
        products = Product.get_products_by_id(list(cart.keys()))
        # print(address, phone, customer, cart, products)

        # iteration over products to save each order having a particular product object
        for product in products:
            order = Order(address=address,
                          phone=phone,
                          customer=Customer(id=customer),
                          product=product,
                          quantity=cart.get(str(product.id)),
                          price=product.price)
            order.placeOrder()
        # for clearing cart after placing the orders
        request.session['cart'] = {}

        return redirect('cart')
예제 #4
0
    def post(self,request):
        address = request.POST.get('address')
        phone = request.POST.get('phone')
        customer = request.session.get('customer_id')
        cart = request.session.get('cart')
        products = Product.get_products_by_id(list(cart.keys()))
        # print(address, phone, customer,cart,products)

        for product in products:
            #create order object
            order = Order(
                customer = Customer(id=customer),
                product = product,
                price = product.price,
                phone = phone,
                address = address,
                quantity = cart.get(str(product.id))
            )
            #order save
            order.placeOrder()
        #cart clear
        request.session['cart'] ={}
        return redirect('cart')
예제 #5
0
    def post(self, request):
        address = request.POST.get("address")
        phone = request.POST.get("phone")
        customer = request.session.get("customer_id")
        cart = request.session.get("cart")
        products = Product.get_products_by_id(list(cart.keys()))
        print(address, phone, customer, cart, "\t\t++++", products)

        for product in products:
            order = Order(
                customer=Customer(id=customer),
                product=product,
                address=address,
                phone=phone,
                price=product.price,
                quantity=cart.get(str(product.id)),
            )
            print(order.placeOrder())
            request.session["cart"] = {}

        return redirect("cart")
예제 #6
0
    def post(self, request):
        firstname = request.POST.get('firstname')
        lastname = request.POST.get('lastname')
        phone = request.POST.get('phone')
        payment = request.POST.get('payment')
        address = request.POST.get('address')
        zipcode = request.POST.get('zipcode')
        city = request.POST.get('city')
        state = request.POST.get('state')
        country = request.POST.get('country')
        location = request.POST.get('location')
        customer = request.session.get('customer')
        cart = request.session.get('cart')
        product = Product.get_product_by_id(list(cart.keys()))
        for product in product:
            order = Order(customer=Customer(id=customer),
                          product=product,
                          price=product.price,
                          firstname=firstname,
                          lastname=lastname,
                          phone=phone,
                          payment=payment,
                          address=address,
                          zipcode=zipcode,
                          city=city,
                          state=state,
                          country=country,
                          location=location,
                          quantity=cart.get(str(product.id)))
            order.placeOrder()
        customer = request.session.get('customer')
        orders = Order.get_orders_by_customer(customer)
        order = request.session.get('order')
        ids = list(request.session.get('cart').keys())
        products = Product.get_product_by_id(ids)
        cart = request.session['cart']
        customer = Order(
            firstname=firstname,
            lastname=lastname,
            phone=phone,
            payment=payment,
            address=address,
            zipcode=zipcode,
            city=city,
            state=state,
            country=country,
            location=location,
        )
        error_message = None
        error_message = self.validateCustomer(customer)
        value = {
            'firstname': firstname,
            'lastname': lastname,
            'phone': phone,
            'payment': payment,
            'address': address,
            'zipcode': zipcode,
            'city': city,
            'state': state,
            'location': location,
            'country': country,
        }
        if (not error_message):
            context = {
                'name': firstname + lastname,
                'phone': phone,
                'payment': payment,
                'address': address,
                'zipcode': zipcode,
                'city': city,
                'state': state,
                'location': location,
                'orders': orders,
                'products': products,
                'cart': cart,
            }
            template = render_to_string(
                '../../store/templates/ordersmail.html', context)
            id = request.session.get('customer')
            mail = Customer.objects.get(id=int(id)).email
            print(mail)
            email = EmailMultiAlternatives(
                'Thank You For The Order ',
                template,
                settings.EMAIL_HOST_USER,
                [mail],
            )
            email.attach_alternative(template, "text/html")
            email.send()
            request.session['cart'] = {}
            return redirect('orders')

        else:
            country = geocoder.description_for_number(
                phonenumbers.parse(customer.phone), "en")
            data = {
                'error': error_message,
                'values': value,
                'country': country
            }
            return render(request, 'checkout.html', data)
예제 #7
0
    def post(self, request):
        payment = request.POST.get('payment')
        fullname = request.POST.get('fullname')
        mobilenumber = request.POST.get('mobilenumber')
        pincode = request.POST.get('pincode')
        flat = request.POST.get('flat')
        area = request.POST.get('area')
        landmark = request.POST.get('landmark')
        city = request.POST.get('city')
        state = request.POST.get('state')

        # validation
        values = {
            'payment': payment,
            'fullname': fullname,
            'mobilenumber': mobilenumber,
            'pincode': pincode,
            'flat': flat,
            'area': area,
            'landmark': landmark,
            'city': city,
            'state': state
        }
        error_message = None
        if (not payment):
            error_message = "Select Payment Options !!!"
        elif (not state):
            error_message = "Select State Required !!!"

        customer = request.user
        cart = request.session.get('cart')
        products = Product.get_products_by_id(list(cart.keys()))
        customer_obj = customer
        order_id_list = []
        amount = 0
        transactionid = uuid.uuid1().hex
        if not error_message:
            for product in products:
                order = Order(customer=customer,
                              product=product,
                              price=product.price,
                              quantity=cart.get(str(product.id)))
                order.placeOrder()
                order_id_list.append(order.id)
                amount = amount + order.price * order.quantity
            if payment == "online":
                orderidmerge = Orderidmerge(customer=customer,
                                            transactionid=transactionid,
                                            orderid=order_id_list,
                                            amount=amount,
                                            payment="online")
            else:
                orderidmerge = Orderidmerge(customer=customer,
                                            transactionid=transactionid,
                                            orderid=order_id_list,
                                            amount=amount,
                                            payment="cod")
            orderidmerge.save()

            shippingaddress = Shippingaddress(
                order=Orderidmerge(id=orderidmerge.id),
                fullname=fullname,
                mobilenumber=mobilenumber,
                pincode=pincode,
                flat=flat,
                area=area,
                landmark=landmark,
                city=city,
                state=state)
            shippingaddress.save()
            if payment == "online":

                param_dict = {
                    'MID': 'LgWYcs58579287008550',
                    'ORDER_ID': str(orderidmerge.transactionid),
                    'TXN_AMOUNT': str(amount),
                    'CUST_ID': str(customer_obj.email),
                    'INDUSTRY_TYPE_ID': 'Retail',
                    'WEBSITE': 'WEBSTAGING',
                    'CHANNEL_ID': 'WEB',
                    'CALLBACK_URL': 'http://127.0.0.1:8000/handlerequest/',
                }
                param_dict['CHECKSUMHASH'] = Checksum.generate_checksum(
                    param_dict, MERCHANT_KEY)
                return render(request, 'paytm.html',
                              {'param_dict': param_dict})
            else:

                cart_obj = Cart.get_cart_by_customer(customer)
                cart_obj.delete()
                request.session['cart'] = {}
                response_dict = {
                    'RESPCODE': "01",
                    'ORDERID': orderidmerge.transactionid,
                }
                return render(request, 'paymentstatus.html',
                              {'response': response_dict})
        else:
            data = {'error': error_message, 'values': values}
            return render(request, 'checkout.html', data)