Example #1
0
def make_order(request, item_id = None):
    if not request.session or not request.session.get('order_items_count',0):
        return render_to_response('store/make_order_error.html')

    if not request.user or request.user.is_anonymous():
        return render_to_response('store/login_to_order.html')

    gifts = recalculate_order(request, item_id)
    if request.user and not request.user.is_anonymous():
        form = OrderingUserForm(initial={'name':request.user.first_name, 'telephone':request.user.telephone, 'email':request.user.email})
    else:
        form = OrderingUserForm()
    if request.method == 'POST':
        if form.validate(request.form):
            user = form.save()
            if request.user and not request.user.is_anonymous():
                user.register_user = request.user
            user.put()
            order =Order(user=user)
            for gift in gifts:
                new_gift = OrderItem(gift=gift, count = gift.number)
                if not request.user or request.user.is_anonymous():
                    new_gift.price = gift.price
                else:
                    new_gift.price = gift.real_price
                new_gift.put()
                order.items.append(new_gift.key())
            order.total_price = request.session['order_total_price']
            order.put()
            request.session['order'] = {}
            request.session['order_total_price'] = request.session['order_items_number'] = request.session['order_items_count'] = 0

            def txn():
                taskqueue.add(url=url_for('store/send_order_to_manager',
                                    order_key=str(order.key())),
                                    transactional=True)
            db.run_in_transaction(txn)

            return render_to_response('store/make_order_success.html')
    if item_id:
        if not request.session['order_items_number']:
            return render_to_response('store/make_order_error_text.html')
        return render_to_response('store/make_order_list.html', {'gifts':gifts, 'form':form.as_widget()})
    return render_to_response('store/make_order.html', {'gifts':gifts, 'form':form.as_widget()})