コード例 #1
0
ファイル: views.py プロジェクト: Imuhammed24/myshop__
def order_create(request):
    cart = Cart(request)
    if request.method == 'POST':
        form = OrderCreateForm(request.POST)
        if form.is_valid():
            order = form.save(commit=False)
            order.coupon = cart.coupon
            order.discount = cart.coupon.discount
            order.save()
            total_price = cart.get_total_price()
            total_no_item = cart.__len__()
            for item in cart:
                OrderItem.objects.create(order=order,
                                         product=item['product'],
                                         quantity=item['quantity'],
                                         price=item['price'])
            cart.clear()
            # order_created.delay(order.id)
            return render(
                request, 'orders/order/created.html', {
                    'order': order,
                    'total_price': total_price,
                    'total_no_item': total_no_item,
                    'html_title': 'ORDER MADE'
                })
    else:
        form = OrderCreateForm()
    return render(request, 'orders/order/create.html', {
        'form': form,
        'html_title': 'CHECK_OUT'
    })
コード例 #2
0
def create_order(request):
    cart = Cart(request)
    if (request.user_agent.is_mobile
            or request.user_agent.is_tablet) and cart.__len__() > 0:
        if request.method == 'POST':
            if 'table_id' in request.session:
                table_id = request.session['table_id']
            else:
                return render(request, 'please.html')
            order = Order.objects.create(table=table_id,
                                         total=cart.get_total_price(),
                                         paid=False)
            for item in cart:
                OrderItem.objects.create(order=order,
                                         item=item['item'],
                                         price=item['price'],
                                         quantity=item['quantity'])
            del request.session['table_id']
            request.session.modified = True
            cart.clear()
            return render(request, 'created.html', {'order': order})
        else:
            return render(request, 'create.html', {'cart': cart})
    else:
        return render(request, 'please.html')
コード例 #3
0
def common_context(request):
    context = dict()

    # List of all cities
    all_cities = models.City.objects.all()
    context['all_cities'] = serializers.CitySerializer(all_cities,
                                                       many=True,
                                                       context={
                                                           'request': request
                                                       }).data

    # Current user
    user = request.user
    context['user'] = users_serializers.UserSerializer(user,
                                                       context={
                                                           'request': request
                                                       }).data

    # Current city
    if 'city_id' in request.session:
        current_city = models.City.objects.get(pk=request.session['city_id'])
        context['current_city'] = serializers.CitySerializer(current_city,
                                                             context={
                                                                 'request':
                                                                 request
                                                             }).data

    cart = Cart(request)
    context['cart'] = {
        'cart_quantity': cart.__len__(),
        'cart_total': cart.get_total_cost()
    }

    return context
コード例 #4
0
def product_list(request):
    products = get_available_products()
    username = request.user.username
    cart = Cart(request)
    data = {'username': username, 'cart': cart, 'total_items': cart.__len__()}
    if products:
        data['products'] = products
    return render(request, 'shop/product/list.html', context=data)
コード例 #5
0
ファイル: test.py プロジェクト: vasarostik/Python_Labs
    def test_getLogin(self):
        category = Category.objects.get(name="Bike")
        order = Order.objects.get(first_name="Hornet")
        prod = Product.objects.get(name="tess")
        orderitem = OrderItem.objects.get(product=Product.objects.get(
            name="tess"))

        #product
        self.assertEqual(prod.__str__(), "tess")
        self.assertEqual(prod.get_absolute_url(), "/1/tess/")

        #orderitem
        self.assertEqual(orderitem.get_cost(), 30)
        self.assertEqual(orderitem.__int__(), 3)
        self.assertEqual(orderitem.__str__(), "1")

        #category
        self.assertEqual(category.__str__(), "Bike")
        self.assertEqual(category.get_absolute_url(), "/bike/")
        #order
        self.assertEqual(order.str(), "Hornet")
        self.assertEqual(order.__str__(), "Order 1")
        self.assertEqual(order.get_total_cost(), 30)

        # cart
        response = self.client.post(reverse('cart:cart_detail'))
        response1 = self.client.post(reverse('cart:cart_add', args=[prod.id]))
        response2 = self.client.post(
            reverse('cart:cart_remove', args=[prod.id]))

        self.assertEqual(response.status_code, 200)
        self.assertEqual(response1.status_code, 302)
        self.assertEqual(response2.status_code, 302)

        # orders
        response3 = self.client.post(reverse('orders:order_create'))

        self.assertEqual(response3.status_code, 200)

        #shop
        response4 = self.client.post(reverse('shop:product_list'))
        response5 = self.client.post(
            reverse('shop:product_detail', args=[prod.id, prod.slug]))

        self.assertEqual(response4.status_code, 200)
        self.assertEqual(response5.status_code, 200)

        request = HttpRequest()
        engine = import_module(settings.SESSION_ENGINE)
        session_key = None
        request.session = engine.SessionStore(session_key)
        cart = Cart(request)
        self.assertEqual(cart.__len__(), 0)
        self.assertEqual(cart.get_total_price(), 0)
コード例 #6
0
def product_detail(request, id, article):
    username = request.user.username
    product = get_object_or_404(Product,
                                id=id,
                                article=article,
                                available=True)
    cart_product_form = CartAddProductForm()
    cart = Cart(request)
    data = {
        'product': product,
        'cart_product_form': cart_product_form,
        'cart': cart,
        'username': username,
        'total_items': cart.__len__()
    }
    return render(request, 'shop/product/detail.html', context=data)
コード例 #7
0
    def post(self, request, *args, **kwargs):
        form = CreateOrderForm(request.POST or None)
        cart = Cart(request)
        #customer = Customer.objects.get(user=request.user)

        if form.is_valid():
            order = form.save(commit=False)
            # order.customer = customer
            order.city = form.cleaned_data['city']
            order.receive_method = form.cleaned_data['receive_method']
            order.address = form.cleaned_data['address']
            order.apartment_number = form.cleaned_data['apartment_number']
            order.porch_number = form.cleaned_data['porch_number']
            order.floor_number = form.cleaned_data['floor_number']
            order.intercom = form.cleaned_data['intercom']
            order.full_passport_name = form.cleaned_data['full_passport_name']
            order.phone = form.cleaned_data['phone']
            order.email = form.cleaned_data['email']
            order.delivery_date = form.cleaned_data['delivery_date']
            order.delivery_time = form.cleaned_data['delivery_time']
            order.payment_method = form.cleaned_data['payment_method']
            order.comment = form.cleaned_data['comment']
            order.save()

            for item in cart:
                OrderItem.objects.create(order=order,
                                         product=item['product'],
                                         price=item['price'],
                                         quantity=item['quantity'])

            # Celery email task
            send_str = 'Вы закази {} товаров на сумму {} руб.'.format(
                cart.__len__(), cart.get_total_price())
            send_order_created_email.delay(form.cleaned_data['email'],
                                           send_str)

            cart.clear()

            messages.add_message(
                request, messages.INFO,
                'Спасибо за заказ! Менеджер с вами свяжется в течение 5 минут.'
            )
            return HttpResponseRedirect('/')

        return HttpResponseRedirect('/orders/checkout/')
コード例 #8
0
def order_create(request):
    cart = Cart(request)
    if cart.__len__() > 0:
        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)
                    messages.success(
                        request,
                        'Ваш заказ успешно зарегистрирован. Мы отправили вам письмо с номером заказа на адрес почты который вы указали при заполнении формы.'
                    )
                    return redirect("shop:product_list")
        else:
            form = OrderCreateForm()
        return render(request, 'orders/order_create.html', {
            'cart': cart,
            'form': form
        })
    else:
        messages.success(
            request,
            'Ваша корзина пуста. Для перехода по ссылке необходимо добавить товары в корзину и подтвердить заказ.'
        )
        return redirect("shop:product_list")