Exemplo n.º 1
0
def create_order(request, transaction_id):
    """
    Если POST запрос к платежной системе успешен, создаем новый заказ содержащий товары из корзины
    Сохраняем заказ с идентификатором транзации который вернет шлюз платежной системы
    В конце делаем очистку корзины
    """
    order = Order()
    checkout_form = ContactForm(request.POST, instance=order)
    checkout_form.shipping_address_1 = u'%s' % request.POST[
        'shipping_address_1']
    order = checkout_form.save(commit=False)

    # присваиваем купон заказу по купону корзины
    cart_items = cart.get_cart_items(request)
    cupon = Cupon()
    for c in cart_items:
        cupon = c.cupon
    order.cupon = cupon

    order.transaction_id = transaction_id
    order.ip_address = request.META.get('REMOTE_ADDR')
    order.user = None
    if request.user.is_authenticated():
        order.user = request.user
    order.status = Order.SUBMITTED

    delivery = get_current_delivery(request)
    order.delivery = delivery

    order.save()

    if order.pk:
        # Если заказ сохранен
        cart_items = cart.get_cart_items(request)
        for ci in cart_items:
            # Создаем товар в заказе для каждого товара в корзине
            oi = OrderItem()
            oi.order = order
            oi.quantity = ci.quantity
            oi.price = ci.price
            oi.product = ci.product
            oi.feel = ci.feel
            oi.atributes = ci.atributes
            oi.save()
        # Очищаем корзину после оформления заказа
        cart.empty_cart(request)

        # Очищаем сессию cart_id
        request.session[CART_ID_SESSION_KEY] = ''

        # Сохраняем введенные данные для будующих заказов
        if request.user.is_authenticated():
            profile.set(request)

        # Сохраняем информацию о профиле пользователя
        if request.user.is_authenticated():
            profile.set(request)
    # Возвращаем объект - новый заказа
    return order
Exemplo n.º 2
0
def create_order(request, transaction_id):
    """
    Если POST запрос к платежной системе успешен, создаем новый заказ содержащий товары из корзины
    Сохраняем заказ с идентификатором транзации который вернет шлюз платежной системы
    В конце делаем очистку корзины
    """
    order = Order()
    checkout_form = ContactForm(request.POST, instance=order)
    checkout_form.shipping_address_1 = u'%s' % request.POST['shipping_address_1']
    order = checkout_form.save(commit=False)

    # присваиваем купон заказу по купону корзины
    cart_items = cart.get_cart_items(request)
    cupon = Cupon()
    for c in cart_items:
        cupon = c.cupon
    order.cupon = cupon

    order.transaction_id = transaction_id
    order.ip_address = request.META.get('REMOTE_ADDR')
    order.user = None
    if request.user.is_authenticated():
        order.user = request.user
    order.status = Order.SUBMITTED

    delivery = get_current_delivery(request)
    order.delivery = delivery

    order.save()

    if order.pk:
        # Если заказ сохранен
        cart_items = cart.get_cart_items(request)
        for ci in cart_items:
            # Создаем товар в заказе для каждого товара в корзине
            oi = OrderItem()
            oi.order = order
            oi.quantity = ci.quantity
            oi.price = ci.price
            oi.product = ci.product
            oi.feel = ci.feel
            oi.atributes = ci.atributes
            oi.save()
        # Очищаем корзину после оформления заказа
        cart.empty_cart(request)

        # Очищаем сессию cart_id
        request.session[CART_ID_SESSION_KEY] = ''

        # Сохраняем введенные данные для будующих заказов
        if request.user.is_authenticated():
            profile.set(request)

        # Сохраняем информацию о профиле пользователя
        if request.user.is_authenticated():
            profile.set(request)
    # Возвращаем объект - новый заказа
    return order
Exemplo n.º 3
0
def order_info_view(request, template_name="registration/order_info.html"):
    """Представление данных профиля"""
    if request.method == 'POST':
        postdata = request.POST.copy()
        form = UserProfileForm(postdata)
        if form.is_valid():
            profile.set(request)
            url = urlresolvers.reverse('my_account')
            return HttpResponseRedirect(url)
    else:
        user_profile = profile.retrieve(request)
        form = UserProfileForm(instance=user_profile)
    page_title = _(u'Edit Order Information')
    return render_to_response(template_name, locals(),
                                  context_instance=RequestContext(request))
Exemplo n.º 4
0
def order_info_view(request, template_name="registration/order_info.html"):
    """Представление данных профиля"""
    if request.method == 'POST':
        postdata = request.POST.copy()
        form = UserProfileForm(postdata)
        if form.is_valid():
            profile.set(request)
            url = urlresolvers.reverse('my_account')
            return HttpResponseRedirect(url)
    else:
        user_profile = profile.retrieve(request)
        form = UserProfileForm(instance=user_profile)
    page_title = _(u'Edit Order Information')
    request.breadcrumbs(page_title, request.path_info)
    return render_to_response(template_name, locals(),
                                  context_instance=RequestContext(request))
Exemplo n.º 5
0
def create_order(request, transaction_id):
    """
    Если POST запрос к платежной системе успешен, создаем новый заказ содержащий товары из корзины
    Сохраняем заказ с идентификатором транзации который вернет шлюз платежной системы
    В конце делаем очистку корзины
    """
    order = Order()
    checkout_form = ContactForm(request.POST, instance=order)
    order = checkout_form.save(commit=False)



    order.transaction_id = transaction_id
    order.ip_address = request.META.get('REMOTE_ADDR')
    order.user = None
    if request.user.is_authenticated():
        order.user = request.user
    order.status = Order.SUBMITTED
    order.cupon = cart.get_cupon(request)
    order.save()

    if order.pk:
        # Если заказ сохранен
        cart_items = cart.get_cart_items(request)
        for ci in cart_items:
            # Создаем товар в заказе для каждого товара в корзине
            oi = OrderItem()
            oi.order = order
            oi.quantity = ci.quantity
            oi.price = (ci.price - (ci.price * int(ci.cupon.percent) / 100))
            oi.product = ci.product
            oi.save()
        # Очищаем корзину после оформления заказа
        cart.empty_cart(request)
        # Сохраняем введенные данные для будующих заказов
        if request.user.is_authenticated():
            profile.set(request)

        # Сохраняем информацию о профиле пользователя
        if request.user.is_authenticated():
            profile.set(request)
    # Возвращаем объект - новый заказа
    return order
Exemplo n.º 6
0
def create_order(request, transaction_id):
    """
    Если POST запрос к платежной системе успешен, создаем новый заказ содержащий товары из корзины
    Сохраняем заказ с идентификатором транзации который вернет шлюз платежной системы
    В конце делаем очистку корзины
    """
    order = Order()
    checkout_form = CheckoutForm(request.POST, instance=order)
    order = checkout_form.save(commit=False)

    order.transaction_id = transaction_id
    order.ip_address = request.META.get('REMOTE_ADDR')
    order.user = None
    if request.user.is_authenticated():
        order.user = request.user
    order.status = Order.SUBMITTED
    order.save()

    if order.pk:
        # Если заказ сохранен
        cart_items = cart.get_cart_items(request)
        for ci in cart_items:
            # Создаем товар в заказе для каждого товара в корзине
            oi = OrderItem()
            oi.order = order
            oi.quantity = ci.quantity
            oi.price = ci.price
            oi.product = ci.product
            oi.save()
        # Очищаем корзину после оформления заказа
        cart.empty_cart(request)
        # Сохраняем введенные данные для будующих заказов
        if request.user.is_authenticated():
            profile.set(request)

        # Сохраняем информацию о профиле пользователя
        if request.user.is_authenticated():
            profile.set(request)
    # Возвращаем объект - новый заказа
    return order
Exemplo n.º 7
0
def contact(request, template_name='checkout/checkout.html'):

    device = change_template_for_device(request, template_name)['device']
    request.breadcrumbs(u'Данные получателя', request.path_info)

    if cart.is_empty(request):
        cart_url = urlresolvers.reverse('show_cart')
        return HttpResponseRedirect(cart_url)

    if request.method == 'POST':
        form = ContactForm(request.POST)
        phone = request.POST['phone']

        if form.is_valid():

            form.clean_phone()

            """создание пользователя при оформлении заказа если не зарегистрирован"""
            #1 создать user
            #2 отправить письмо
            #3 создать User_profile
            if not request.user.is_authenticated():
                name , nu = request.POST['email'].split('@')[:2]
                try:
                    login_exist = User.objects.filter(username__icontains=name)
                    if login_exist:
                        name = '%s%s' % (name, login_exist.count())
                except Exception:
                    name = name

                new_user = User(username=name, email=request.POST['email'])
                password = User.objects.make_random_password()
                new_user.set_password(password)
                new_user.save()

                context_dict = {
                    'name': request.POST['shipping_name'],
                    'username': new_user.username,
                    'password': password,
                }

                subject = u'Регистрация на сайте www.polythai.ru'
                message = render_to_string('checkout/reg_email.html', context_dict)
                from_email = '*****@*****.**'
                to = new_user.email
                msg = EmailMultiAlternatives(subject, message, from_email, [to])
                msg.content_subtype = "html"
                msg.send()

                user = authenticate(username=name, password=password)
                if user is not None:
                    if user.is_active:
                        login(request, user)
                        profile.set(request)


            """процесс создания заказа на основе того что было в корзине и на основе введенных данных"""
            response = checkout.process(request)

            order = response.get('order', 0)
            order_id = order.id

            if order_id:
                request.session['order_id'] = order_id
                receipt_url = urlresolvers.reverse('checkout_receipt')

                return HttpResponseRedirect(receipt_url)
        else:
            form = ContactForm(request.POST)
            return render(request, 'checkout/checkout.html', {
                'form': form,
                'error': form.errors,
            })
    else: #заполняем форму получателя если пользователь авторизирован
        if  request.user.is_authenticated():
            user_profile = profile.retrieve(request)
            form = ContactForm(instance=user_profile)
        else:
            form = ContactForm()

    return render_to_response(template_name, locals(),
                              context_instance=RequestContext(request))
Exemplo n.º 8
0
def contact(request, template_name='checkout/checkout.html'):

    request.breadcrumbs(u'Данные получателя', request.path_info)

    if cart.is_empty(request):
        cart_url = urlresolvers.reverse('show_cart')
        return HttpResponseRedirect(cart_url)

    if request.method == 'POST':
        form = ContactForm(request.POST)
        phone = request.POST['phone']

        if form.is_valid():

            form.clean_phone()
            """создание пользователя при оформлении заказа если
            не зарегистрирован"""
            #1 создать user
            #2 отправить письмо
            #3 создать User_profile
            if not request.user.is_authenticated():
                name, nu = request.POST['email'].split('@')[:2]
                try:
                    login_exist = User.objects.filter(username__icontains=name)
                    if login_exist:
                        name = '%s%s' % (name, login_exist.count())
                except Exception:
                    name = name

                new_user = User(username=name, email=request.POST['email'])
                password = User.objects.make_random_password()
                new_user.set_password(password)
                new_user.save()

                context_dict = {
                    'name': request.POST['shipping_name'],
                    'username': new_user.username,
                    'password': password,
                }

                subject = u'Регистрация на сайте www.polythai.ru'
                message = render_to_string('checkout/reg_email.html',
                                           context_dict)

                from_email = '*****@*****.**'
                to = new_user.email
                msg = EmailMultiAlternatives(subject, message, from_email,
                                             [to])
                msg.content_subtype = "html"
                msg.send()

                user = authenticate(username=name, password=password)
                if user is not None:
                    if user.is_active:
                        login(request, user)
                        profile.set(request)
            """процесс создания заказа на основе того что было в корзине
            и на основе введенных данных"""
            response = checkout.process(request)
            order = response.get('order', 0)
            order_id = order.id

            if order_id:
                request.session['order_id'] = order_id
                receipt_url = urlresolvers.reverse('checkout_receipt')
                return HttpResponseRedirect(receipt_url)
        else:
            form = ContactForm(request.POST)
            return render(request, 'checkout/checkout.html', {
                'form': form,
                'error': form.errors,
            })
    else:  # заполняем форму получателя если пользователь авторизирован
        if request.user.is_authenticated():
            user_profile = profile.retrieve(request)
            form = ContactForm(instance=user_profile)
        else:
            form = ContactForm()

    return render_to_response(template_name,
                              locals(),
                              context_instance=RequestContext(request))