예제 #1
0
def api_checkout(request):
    cart = Cart(request)

    data = json.loads(request.body)
    jsonresponse = {"success": True}
    first_name = data["first_name"]
    last_name = data["last_name"]
    email = data["email"]
    address = data["address"]
    zipcode = data["zipcode"]
    place = data["place"]

    orderid = checkout(request, first_name, last_name, email, address, zipcode,
                       place)

    paid = True

    if paid == True:
        order = Order.objects.get(pk=orderid)
        order.paid = True
        order.paid_amount = cart.get_total_cost()
        order.save()

        cart.clear()

    return JsonResponse(jsonresponse)
예제 #2
0
def order_create(request):
    cart = Cart(request)
    if request.method == 'POST':
        form = OrderCreateForm(request.POST)
        if form.is_valid():
            order = form.save()
            for item in cart:
                OrderItem.objects.create(order=order,
                                         product=item['product'],
                                         price=item['price'],
                                         quantity=item['quantity'])
            # очистка корзины
            cart.clear()
            order_created(order.id)
            request.session['order_id'] = order.id
            # redirect to the payment
            return redirect('payment:process')
        #  return render(request, 'orders/order/created.html',
        #              {'order': order})
    else:
        form = OrderCreateForm
    return render(request, 'orders/order/create.html', {
        'cart': cart,
        'form': form
    })
예제 #3
0
def api_checkout(request):
    cart = Cart(request)
    data = json.loads(request.body)
    jsonresponse = {'success': True}
    first_name = data['first_name']
    last_name = data['last_name']
    email = data['email']
    address = data['address']
    zipcode = data['zipcode']
    place = data['place']

    orderid = checkout(request, first_name, last_name, email, address, zipcode,
                       place)

    paid = True

    if paid == True:
        order = Order.objects.get(pk=orderid)
        order.paid = True
        order.paid_amount = cart.get_total_cost()
        order.save()

        cart.clear()

    return JsonResponse(jsonresponse)
예제 #4
0
def api_checkout(request):

    cart = Cart(request)

    data = json.loads(request.body)
    jsonresponse = {'success': True}
    first_name = data['first_name']
    last_name = data['last_name']
    email = data['email']
    city = data['city']
    address = data['address']
    phone = data['phone']
    orderid = checkout(request, first_name, last_name, email, city, address,
                       phone)

    cod = True

    if cod:
        order = Order.objects.get(pk=orderid)
        order.cod = True
        order.amount_to_be_paid = cart.get_total_cost()
        order.save()
        html = render_to_string('core/email_confirmation.html')
        send_mail('Order Confirmation',
                  'Your order has been sent',
                  '*****@*****.**', ['*****@*****.**', order.email],
                  fail_silently=True,
                  html_message=html)
        cart.clear()

    return JsonResponse(jsonresponse)
예제 #5
0
def order_create(request):
    cart = Cart(request)
    if request.method == 'POST':
        form = OrderCreateForm(request.POST)
        if form.is_valid():
            order = form.save(commit=False)
            if cart.coupon:
                order.coupon = cart.coupon
                order.discount = cart.coupon.discount
            order.paid = True
            order.save()
            for item in cart:
                OrderItem.objects.create(order=order, product=item['product'], price=item['price'], quantity=item['quantity'])
                #clear the cart
                cart.clear()
                template = 'orders/order/created.html'
                context = {
                    'order': order,
                }
                # Lauch asynchronous task
                # order_created.delay(order.id)
                return render(request, template, context)
    else:
        form = OrderCreateForm()
    template = 'orders/order/create.html'
    context = {
        'cart': cart,
        'form': form,
    }
    return render(request, template, context)
예제 #6
0
def api_checkout(request):
    cart = Cart(request)

    data = json.loads(request.body)
    json_response = {'success': True}
    first_name = data['first_name']
    last_name = data['last_name']
    email = data['email']
    address = data['address']
    zipcode = data['zipcode']
    city = data['city']
    country = data['country']

    orderid = checkout(request, first_name, last_name, email, address, zipcode,
                       city, country)

    paid = True  # Update payment if Stripe gets a response back

    if paid:
        order = Order.objects.get(pk=orderid)
        order.paid = True
        order.paid_amount = cart.get_total_cost()
        order.save()

        cart.clear()  # When order is complete and paid clear the cart

    return JsonResponse(json_response)
예제 #7
0
def order_create(request):
    cart = Cart(request)
    if request.method == 'POST':
        form = OrderCreateForm(request.POST)
        if form.is_valid():
            order = form.save(commit=False)

            if cart.coupon:
                order.coupon = cart.coupon
                order.discount = cart.coupon.discount
            order.save()

            for item in cart:
                OrderItem.objects.create(order=order,
                                         product=item['product'],
                                         price=item['price'],
                                         quantity=item['quantity'])
            # clear the cart
            cart.clear()
            # launch asynchronous task
            order_created.delay(order.id)
            # set the order in the session
            request.session['order_id'] = order.id
            # redirect for payment
            return redirect(reverse('payment:process'))
    else:
        form = OrderCreateForm()
    return render(request, 'orders/order/create.html', {
        'cart': cart,
        'form': form
    })
예제 #8
0
def order_create(request):
    cart = Cart(request)
    if not request.user.is_authenticated:
        return redirect('cuenta:dashboard')
    if request.method == 'POST':
        form = OrderCreateForm(request.POST)
        if form.is_valid():
            order = form.save(commit=False)
            order.usuario = request.user
            order.pagado = False
            order.creado = datetime.datetime.now()
            order.actualizado = datetime.datetime.now()
            order.save()
            productos_comp = []
            for item in cart:
                OrderItem.objects.create(orden=order,producto=item['product'],precio=item['price'],
                    cantidad=item['quantity'])
                productos_comp.append(item['product'])
            if settings.USE_REDIS:
                r = Recommender()
                r.producto_comprados(productos_comp)

            # clear the cart
            send_mail(
                'Se ha producido una venta',
                'Un cliente ha comprado algo en la web podes modificarla aca {0}orders/admin/order/{1}/pdf/'.format(
                    settings.BASE_URL, order.id
                ),
                '*****@*****.**',
                settings.VENTAS,
                fail_silently=False,
            )
            cart.clear()
            return render(request,'orders/order/creado.html',{'order': order})
        else:
            messages.warning(request, 'Debe corregir los datos para poder finalizar la compra.')
    else:
        ultimacompra = None
        try:
            ultimacompra = Order.objects.filter(usuario=request.user).order_by('-creado')
        except:
            pass
        if ultimacompra:
            print("Ultima compra: {}".format(ultimacompra[0]))
            form = OrderCreateForm(initial={'nombre':ultimacompra[0].nombre if ultimacompra[0].nombre else '',
                                            'apellido':ultimacompra[0].apellido if ultimacompra[0].apellido else '',
                                            'email':ultimacompra[0].email if ultimacompra[0].email else '',
                                            'direccion':ultimacompra[0].direccion,
                                            'telefono':ultimacompra[0].telefono,
                                            'codigopostal':ultimacompra[0].codigopostal,
                                            'ciudad':ultimacompra[0].ciudad})
        else:
            print("No hay compra registrada")
            form = OrderCreateForm(initial={
                'nombre':'',
                'apellido':'',
                'email':''
            })
    return render(request,'orders/order/crear.html',{'cart': cart, 'form': form})
예제 #9
0
def api_checkout(request):
    cart = Cart(request)

    data = json.loads(request.body)
    jsonresponse = {'success': True}
    first_name = data['first_name']
    last_name = data['last_name']
    email = data['email']
    address = data['address']
    zipcode = data['zipcode']
    place = data['place']
    phone = data['phone']

    orderid = checkout(request, first_name, last_name, email, address, zipcode,
                       place, phone)

    paid = True

    order = Order.objects.get(pk=orderid)
    for item in order.items.all():
        product = item.product
        product.num_available = product.num_available - item.quantity
        product.save()

    #mail
    # html = render_to_string('order_confirmation.html', {'order': order})
    # send_mail('Order confirmation', 'Your order is successful!', '*****@*****.**', ['*****@*****.**', order.email], fail_silently=False, html_message=html)

    if paid == True:
        order = Order.objects.get(pk=orderid)
        order.paid = True
        order.paid_amount = cart.get_total_cost()
        order.save()

        cart.clear()
        send_order_confirmation(order)

    return JsonResponse(jsonresponse)
예제 #10
0
def order_create(request):
    cart = Cart(request)
    if request.method == 'POST':
            form = OrderCreateForm(request.POST)
            if form.is_valid():
                order = form.save()
                for item in cart:
                    OrderItem.objects.create(order=order,
                                             product=item['product'],
                                             price=item['price'],
                                             quantity=item['quantity'])
                # очистка корзины
                cart.clear()
                # запуск ассинхронной операции
                order_created.delay(order.id)
                # установить заказ в сессии
                request.session['order_id'] = order.id
                # перенаправить на оплату
                return redirect(reverse('payment:process'))
    else:
        form = OrderCreateForm()
    return render(request, 'order_create.html', {'cart': cart,
                                                        'form': form})
예제 #11
0
def order_create(request):
    cart = Cart(request)
    if request.method == 'POST':
        form = OrderCreateForm(request.POST)
        if form.is_valid():
            order = form.save()
            for item in cart:
                OrderItem.objects.create(order=order,
                                        product=item['product'],
                                        price=item['price'],
                                        quantity=item['quantity'])
            # clear the cart
            cart.clear()
            # launch asynchronous task
            #order_created.delay(order.id) #resolver
            return render(request,
                          'orders/order/created.html',
                          {'order': order})
    else:
        form = OrderCreateForm()
    return render(request,
                  'orders/order/create.html',
                  {'cart': cart, 'form': form})
예제 #12
0
def purchase_success(request):
    # Sample URL:
    # http://127.0.0.1:8000/success/?checkoutId=CBASEDGudSOD2DXxMx1KwaQWwbI&referenceId=api-order-002&transactionId=12tDMXN2yonV07EUiJT2gQfzTG7YY

    passed_transaction_id = request.GET.get('transactionId', None)
    if not passed_transaction_id:
        return render(request, 'purchase_failed.html',
                      {'error_info': {
                          'message': 'No transactionId'
                      }})

    # Get the customer's id
    try:
        transaction_api = squareconnect.apis.transactions_api.TransactionsApi()
        transaction_api.api_client.configuration.access_token = settings.BIEN_SQR_ACCESS_TOKEN
        transaction_result = transaction_api.retrieve_transaction(
            settings.BIEN_SQR_LOCATION_ID, passed_transaction_id)
        customer_id = transaction_result.transaction.tenders.pop().customer_id
    except:
        return render(
            request, 'purchase_failed.html', {
                'error_info': {
                    'message':
                    'Failed to load transaction: ' + passed_transaction_id
                }
            })

    # There are replication delays which can cause the customer to not be available here.
    # try to get the value, try several times before failing.
    keep_retrying = 8
    while True:
        try:
            # And now the customer email
            customers_api = squareconnect.apis.customers_api.CustomersApi()
            customers_api.api_client.configuration.access_token = settings.BIEN_SQR_ACCESS_TOKEN
            customer_result = customers_api.retrieve_customer(customer_id)
            customer_email = customer_result.customer.email_address

        except:
            if keep_retrying == 0:
                return render(
                    request, 'purchase_failed.html',
                    {'error_info': {
                        'message': 'Failed to load customer.'
                    }})
            else:
                keep_retrying = keep_retrying - 1
                time.sleep(1.5)
                continue

        break

    # Build the results
    order_info = {
        'customer_id': customer_id,
        'transaction_id': passed_transaction_id,
        'customer_email': customer_email
    }
    cart = Cart(request)
    cart.clear()
    return render(request, 'success.html', order_info)