Ejemplo n.º 1
0
def order_detail(request):
    currencies = Currency.objects.all()
    categories = Category.objects.all()

    if 'cart' not in request.session:
        request.session['cart'] = list()
    cart_products = Product.objects.filter(id__in=request.session['cart'])
    cart_total_price = 0
    for product in cart_products:
        cart_total_price = cart_total_price + product.product_price
    if request.method == "POST":
        form = OrderForm(request.POST)
        if form.is_valid():
            order1 = form.save()
            print('form saved')
            order1.product.add()
            body = render_to_string("email.html", locals(), request)
            email = EmailMessage('Subject', body, to=['*****@*****.**'])
            email.content_subtype = 'html'
            email.send()
            messages.success(request, "Отлично! Ваше письмо отправлено!")
        else:
            messages.warning(request, "Упс! Проверьте заполнение полей!")
    else:
        form = OrderForm()

    return render(request, 'order_form.html', locals())
Ejemplo n.º 2
0
def order_cart(request):
    if request.method == 'POST':
        form = OrderForm(request.POST)
        if form.is_valid():
            subject = u'Заказ с сайта'
            recipients = []
            try:
                recipients.extend(emails_list(request.settings.email))
            except:
                recipients.append(settings.ADMINS[0][1])
            cart = Cart(request, init=True)
            letter_context = form.cleaned_data
            letter_context.update({'site': request.settings.project})
            order_text = render_to_string('order_info.txt', {'cart': cart})
            letter_content = render_to_string('order_letter.txt', letter_context)
            letter_content += order_text
            send_mail(subject, letter_content, letter_context['email'] or recipients[0], recipients)
            success_message = u"""
            Благодарим за то, что Вы воспользовались услугами нашего Интернет-магазина.
            Ваша заявка принята в обработку и наш менеджер свяжется с Вами в ближайшее время для уточнения деталей.
            Мы будем благодарны Вам, если Вы оставите на нашем сайте свой отзыв о работе нашего  Интернет-магазина.
            """
            messages.add_message(request, messages.SUCCESS, success_message)
            cart.delete_all()
            return HttpResponseRedirect('')
    else:
        form = OrderForm()
    return render_to_response('cart_order.html', {'form': form},
        context_instance=RequestContext(request))   
Ejemplo n.º 3
0
def order_details(request, id):
    product = Mobile.objects.get(id=id)
    form = OrderForm(initial={"user": request.user, "product": product})
    context = {}
    context["form"] = form
    if request.method == "POST":
        form = OrderForm(request.POST)
        if form.is_valid():
            form.save()
            return redirect("cart")
        else:
            form
    return render(request, "shop/order.html", context)
Ejemplo n.º 4
0
def orderadd(request):
    products = Product.objects.all()
    if request.method == 'POST':
        form = OrderForm(request.POST)
        if form.is_valid():
            form.save()
            return redirect('/orders')
    else:
        form = OrderForm()
    return render(request, 'shop/orderadd.html', {
        'form': form,
        'products': products
    })
Ejemplo n.º 5
0
def shop_order(request,
               template,
               extra_context=None,
               context_processors=None,
               template_loader=loader):
    o, create = Order.objects.get_or_create(session=request.shop_session,
                                            is_history=False)

    if request.method == 'POST':
        form = OrderForm(request.POST, instance=o)
        if form.is_valid():
            form.save()

            if o.is_delivery_pay():
                o.is_delivery = True
                o.cost_delivery = o.is_delivery_pay()

            o.is_history = True
            o.save()

            if o.email:
                domain = Site.objects.get_current().domain
                letter_send_mail(
                    'mail/order_accepted.html',
                    _('Order is accepted. Order %(id)d in %(domain)s.') % {
                        'id': o.id,
                        'domain': domain
                    },
                    [
                        o.email,
                    ],
                    {
                        'obj': o,
                        'domain': domain,
                    },
                )

            return HttpResponseRedirect('/basket/order/thanks/')
    else:
        form = OrderForm()

    c = RequestContext(request, {'o': o, 'form': form}, context_processors)

    if extra_context:
        for key, value in extra_context.items():
            if callable(value): c[key] = value()
            else: c[key] = value
    t = template_loader.get_template(template)

    return HttpResponse(t.render(c))
Ejemplo n.º 6
0
 def setUp(self) -> None:
     self.user = MyUser.objects.create_user(username="******", password="******")
     self.product = Product.objects.create(name="1",
                                           description="",
                                           amount=10,
                                           cost=10)
     self.correct_form = OrderForm({
         "user": self.user,
         "product": self.product,
         "amount": 1
     })
     self.incorrect_form = OrderForm({
         "user": self.user,
         "product": self.product,
         "amount": 0
     })
Ejemplo n.º 7
0
def make_order(request):
    user = request.user
    cart = Cart.objects.filter(owner=user).last()
    order_form = OrderForm(request.POST)
    # Form validation
    if order_form.is_valid():
        phone = order_form['phone'].value()
        buy_type = order_form['buy_type'].value()
        address = order_form['address'].value()
        comments = order_form['comments'].value()
        # Setting default status of order
        status = 'Accepted'
        order = Order.objects.get_or_create(user=user, items=cart, phone=phone, address=address,
                                            buy_type=buy_type, comments=comments, status=status)
        if order[1]:
            order[0].save()
            new_cart = Cart.objects.create(owner=user)
            # Creating new cart for user after order
            new_cart.save()
            # Sending emails after making order
            server = smtplib.SMTP(MAIL_HOST, MAIL_PORT)
            server.ehlo()
            server.starttls()
            server.login(USERNAME, PASSWORD)
            # Txt of email
            message = 'Dear {0}! Your order has been accepted. Please wait until our manager will process ' \
                      'your order. You will get an email notification after your order will be ready to ' \
                      'deliver or pickup'.format(user.username)
            server.sendmail(USERNAME, user.email, message)
            server.quit()

    return render(request, 'order_final.html')
Ejemplo n.º 8
0
def order_create_view(request):
    cart = check_cart(request)
    form = OrderForm(request.POST or None)
    context = {
        'cart': cart,
        'form': form,
    }
    return render(request, 'shop/order.html', context)
Ejemplo n.º 9
0
def order_view(request):
    cart = Cart.objects.filter(owner=request.user).last()
    order_form = OrderForm()
    context = {
        'cart': cart,
        'order_form': order_form
    }
    return render(request, 'order.html', context)
Ejemplo n.º 10
0
def order(request):
    all_categories = Category.objects.all()
    cart = Cart(request)
    if request.method == "POST":
        user = User.objects.get(username=request.user.username)
        new_order = Order(user=user)
        form = OrderForm(request.POST, instance=new_order)
        if form.is_valid():
            order = form.save()
            email_messaages = "你的购物内容如下:\n"
            for item in cart:
                OrderItem.objects.create(order=order,
                                         product=item.product,
                                         price=item.product.price,
                                         quantity=item.quantity)
                email_messaages += "\n" + "商品: {}, {}元, {}件".format(
                    item.product, item.product.price, item.quantity)
            email_messaages += "\n以上共计{}元\nhttp://fanggaoshang.cn感谢你的订购!".format(
                cart.summary())
            cart.clear()
            messages.add_message(request, messages.INFO, '订单已保存,我们会尽快处理')
            send_mail(
                "感谢你的订购",
                email_messaages,
                "迷你小电商<*****@*****.**>",
                [request.user.email],
            )
            send_mail(
                "有人订购了产品",
                email_messaages,
                "迷你小电商<*****@*****.**>",
                ['*****@*****.**'],
            )
            return redirect('/myorders/')
    else:
        form = OrderForm()

    return render(request, 'order.html', locals())
Ejemplo n.º 11
0
def make_order_view(request):
    cart = check_cart(request)
    form = OrderForm(request.POST or None)
    context = {
        'cart': cart,
        'form': form,
    }
    if form.is_valid():
        name = form.cleaned_data['name']
        last_name = form.cleaned_data['last_name']
        phone = form.cleaned_data['phone']
        email = form.cleaned_data['email']
        buying_type = form.cleaned_data['buying_type']
        address = form.cleaned_data['address']
        comments = form.cleaned_data['comments']
        new_order = Order.objects.create(user=request.user,
                                         items=cart,
                                         total=cart.cart_total,
                                         first_name=name,
                                         last_name=last_name,
                                         phone=phone,
                                         email=email,
                                         address=address,
                                         buying_type=buying_type,
                                         comments=comments)
        # new_order = Order()
        # new_order.user = request.user
        # # new_order.items.add(cart)
        # new_order.items = cart
        # new_order.first_name = name
        # new_order.last_name = last_name
        # new_order.phone = phone
        # new_order.address = address
        # new_order.buying_type = buying_type
        # new_order.comments = comments
        # new_order.total = cart.cart_total
        # new_order.email = cart.email
        # new_order.save()
        del request.session['cart_id']
        del request.session['total']

        return HttpResponseRedirect(reverse('shop:confirmation'))
    return render(request, 'shop/order.html', context)
Ejemplo n.º 12
0
def order_create_view(request):
    cart = check_cart(request)
    form = OrderForm(request.POST or None)
    categories = Category.objects.all()
    context = {'cart': cart, 'form': form, 'categories': categories}
    return render(request, 'shop/order.html', context)
Ejemplo n.º 13
0
    def post(self, request, *args, **kwargs):
        def _get_total_price(ordered_products):
            total_price = 0
            for ordered_product in ordered_products:
                total_price += ordered_product.total
            return total_price

        if request.user.is_authenticated:
            cart = CartAuth(request)
        else:
            cart = Cart(request)
        order_form = OrderForm(request.POST)
        if order_form.is_valid():
            fullname = order_form.cleaned_data['fullname']
            email = order_form.cleaned_data['email']
            phone = order_form.cleaned_data['phone']
            user = None
            if request.user.is_authenticated:
                user = request.user
            elif User.objects.get(username=email).exists():
                return redirect(reverse('account:login'))
            else:
                password = User.objects.make_random_password()
                user = User.objects.create_user(email, email, password)
                profile = Profile(user=user, phone=phone)
                profile.save()
                user.last_name = fullname
            postcode = order_form.cleaned_data.get('postcode')
            region = order_form.cleaned_data.get('region')
            area = order_form.cleaned_data.get('area')
            city = order_form.cleaned_data.get('city')
            street = order_form.cleaned_data.get('street')
            house = order_form.cleaned_data.get('house')
            building = order_form.cleaned_data.get('building')
            apartment = order_form.cleaned_data.get('apartment')
            comment = order_form.cleaned_data.get('comment')
            payment_type = order_form.cleaned_data.get('payment_type')
            entity_name = order_form.cleaned_data.get('entity_name')
            entity_inn = order_form.cleaned_data.get('entity_inn')
            entity_kpp = order_form.cleaned_data.get('entity_kpp')
            delivery = None
            entity = None
            if postcode:
                delivery = Delivery(postcode=postcode,
                                    region=region,
                                    area=area,
                                    city=city,
                                    street=street,
                                    house=house,
                                    building=building,
                                    apartment=apartment,
                                    comment=comment)
                delivery.save()
            if entity_name:
                entity = Entity(title=entity_name,
                                inn=entity_inn,
                                kpp=entity_kpp)
                entity.save()

            order = Order(delivery=delivery, user=user, entity=entity)
            order.save()
            products = tuple(cart.get())
            print(tuple(products), 'ORDER PRODUCTS FOR CREATE')

            ordered_products = OrderedProducts.objects.bulk_create(
                OrderedProducts(order=order,
                                product=product,
                                count=product.count,
                                total=product.get_discount_price() *
                                int(product.count)) for product in products)
            if payment_type in ('bank', 'bill', 'receipt'):
                payment = Payment(total=_get_total_price(ordered_products),
                                  _type=self.payment_type_crutch[payment_type])
                payment.save()
            order.payment = payment
            order.save()
            return redirect(reverse('account:ProfileOrders'))
        return redirect(reverse('account:ProfileOrders'))