Esempio n. 1
0
class OrderView(TemplateView):
    model = Order
    template_name = "order.html"
    form = None

    def get(self, request, *args, **kwargs):
        self.form = OrderForm()
        return super(OrderView, self).get(request, *args, **kwargs)

    def get_context_data(self, **kwargs):
        context = super(OrderView, self).get_context_data(**kwargs)
        context["form"] = self.form
        return context

    def post(self, request, *args, **kwargs):
        self.form = OrderForm(request.POST)
        if self.form.is_valid():
            if self.form.cleaned_data["honeypot"] == "":
                if self.form['qty'] > 0:
                    self.form.save()
                    messages.add_message(request, messages.SUCCESS,
                                         "Заказ успешно отправлен.")
                return redirect("main")
        else:
            return super(OrderView, self).get(request, *args, **kwargs)
Esempio n. 2
0
def show_orderform(context):
    request = context['request']
    if request.method == 'POST':
        form = OrderForm(request.POST)
        if form.is_valid():
            phone = form.cleaned_data['phone']
            email = form.cleaned_data['email']
            name = form.cleaned_data['name']
            date_execution = form.cleaned_data['date_execution']
            address = form.cleaned_data['address']
            message = form.cleaned_data['message']
            form.save()
            recipients = ['*****@*****.**']
            text_content = 'Имя: {}\n{}\nУдобное время: {}\nТелефон: {}\nПочта: {}\nАдрес: {}'.format(
                message, date_execution.strftime("%d.%m.%Y %H:%M"), name, phone, email, address)
            html_content = '<p>Имя: {}</p><p>{}</p><p>Удобное время: {}</p><p>Телефон: {}</p><p>Почта: {}</p><p>Адрес: {}</p>'.format(
                message, date_execution.strftime("%d.%m.%Y %H:%M"), name, phone, email, address)
            send_mail(u'Тест', text_content, '*****@*****.**', recipients, fail_silently=True, auth_user=None,
                      auth_password=None, connection=None, html_message=html_content)
            messages.success(request, 'Поступила новая заявка, номер для связи: ' + phone + '  E-mail: ' + email)
            form = OrderForm()
    else:
        form = OrderForm()
    return {"form": form}
Esempio n. 3
0
def order_product(request, pk):
    '''
    Shows order product page
    '''
    product = Product.objects.get(pk=pk)
    form = OrderForm(initial={'product': product})
    form_errors = None
    if request.method == 'POST':
        form = OrderForm(request.POST)
        if form.is_valid():
            order = form.save(commit=False)
            order.product = product
            order.client = request.user
            order.save()
            return redirect('order')
    return render(request, "product_order.html", {
        'form': form,
        'form_errors': form_errors,
        'product': product,
    })
Esempio n. 4
0
    def post(self, request, *args, **kwargs):
        form = OrderForm(request.POST or None)
        if form.is_valid():
            new_order = form.save(commit=False)

            new_order.first_name = form.cleaned_data['first_name']
            new_order.last_name = form.cleaned_data['last_name']
            new_order.phone = form.cleaned_data['phone']
            new_order.address = form.cleaned_data['first_name']
            new_order.buying_type = form.cleaned_data['buying_type']
            new_order.order_date = form.cleaned_data['order_date']
            new_order.comment = form.cleaned_data['comment']
            new_order.save()
            self.cart.in_order = True
            new_order.cart = self.cart
            new_order.save()

            self.cart.delete()
            messages.add_message(request, messages.INFO, 'Thank you for your order, but its not actually a shop :(')
            return HttpResponseRedirect('/')

        return HttpResponseRedirect('/checkout/')
Esempio n. 5
0
def register(request):
    products = Product.objects.filter(active=True)
    cheapest_product_price = list(products.aggregate(Min('sale_price_int')).values())[0] or 0

    half_a_year_ago = datetime.now() - timedelta(days=180)
    users = User.objects.filter(profile__balance__gte=cheapest_product_price)
    # sort users after user's last purchase time
    users = sorted(users, key=lambda u: u.profile.last_purchase_date(), reverse=True)
    users_js = users_format_js(users)

    # multiple orderlines (one per product)
    OrderLineFormSet = formset_factory(OrderLineForm)
    if request.method == "POST":
        orderform = OrderForm(request.POST)
        formset = OrderLineFormSet(request.POST)

        if formset.is_valid() and orderform.is_valid():
            order = orderform.save(commit=False)

            if order.is_external():
                order_sum = sum([ol['amount'] * ol['unit_price_ext'] for ol in formset.cleaned_data])
            else:
                order_sum = sum([ol['amount'] * ol['unit_price_int'] for ol in formset.cleaned_data])

            # empty order?
            if order_sum == 0:
                messages.error(request, 'Du har ikke valgt hva du skal kjøpe...')
                return HttpResponseRedirect(reverse('register'))

            if not order.is_external():
                profile = order.customer.profile
                # can she afford it?
                if profile.balance < order_sum:
                    messages.error(request, '{0} {1} har ikke råd, mangler {2} kr.'.format(
                        order.customer.first_name,
                        order.customer.last_name,
                        int(order_sum - profile.balance)))
                    return HttpResponseRedirect(reverse('register'))
                # substract order from balance
                profile.balance -= order_sum
                profile.save()

            order.order_sum = order_sum
            order.save()

            orderlines = []
            for ol in formset.cleaned_data:
                if ol['amount'] > 0:
                    product = Product.objects.get(pk=ol['product'])

                    if order.is_external():
                        unit_price = ol['unit_price_ext']
                    else:
                        unit_price = ol['unit_price_int']

                    OrderLine.objects.create(
                        order=order,
                        product=product,
                        amount=ol['amount'],
                        unit_price=unit_price)

                    product.inventory_amount -= ol['amount']
                    product.save()

                    orderlines.append("{0} {1}".format(ol['amount'], product))

            if order.is_external():
                messages.success(request, 'Ekstern kjøpte {0}.'.format(", ".join(orderlines)))
            else:
                messages.success(request, '{0} {1} kjøpte {2}.'.format(
                    order.customer.first_name,
                    order.customer.last_name,
                    ", ".join(orderlines)
                ))

            return redirect('register')
        else:
            # TODO specify error(s)
            messages.error(request, 'Skjemaet er ikke gyldig.')
            orderform = OrderForm(request.POST)
            formset = OrderLineFormSet(request.POST)
    else:
        orderform = OrderForm()
        formset = OrderLineFormSet()
        
    return render(request, 'register.html', locals())