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()})