def add_product_in_cart(request, product_id): product = Product.objects.get(id=product_id) new_item, _ = CartItem.objects.get_or_create(product=product, item_total=product.price) try: cart_id = request.session['cart_id'] cart = Cart.objects.get(id=cart_id) request.session['total'] = cart.items.count() except DoesNotExist: cart = Cart() cart.save() cart_id = cart.id request.session['cart_id'] = cart_id cart = Cart.objects.get(id=cart_id) if new_item not in cart.items.all(): cart.items.add(new_item) cart.save() return HttpResponseRedirect(reverse('index')) else: for cart_items in cart.items.all(): if cart_items.product == product: cart_items.qty += 1 cart_items.item_total += cart_items.item_total cart_items.save() return HttpResponseRedirect(reverse('index'))
def addcart(request): token = request.session.get('token') response_data = {} if token: userid = cache.get(token) user = User.objects.filter(pk=userid) if user.exists(): user = user.first() goodsid = request.GET.get('goodsid') good = Goods.objects.filter(pk=goodsid).first() cart = Cart.objects.filter(user=user).filter(goods=good) if cart.exists(): cart = cart.first() cart.number += 1 cart.save() else: cart = Cart() cart.user = user cart.goods = good cart.number = 1 cart.save() response_data['status'] = 1 response_data['num'] = cart.number return JsonResponse(response_data) response_data['status'] = -1 return JsonResponse(response_data)
def add_to_cart(request): user = request.user product_id = request.GET.get('prod_id') product = Product.objects.get(id=product_id) data_for_cart = Cart(user=user, product=product) data_for_cart.save() return redirect('/show-cart')
def addcart(request): goodsid = request.GET.get('goodsid') goods = Goods.objects.get(pk=goodsid) print(goodsid) token = request.session.get('token') userid = cache.get(token) response_data = {} if userid: user = User.objects.get(pk=userid) carts = user.cart_set.filter(goods=goods).filter(user=user) response_data['status'] = 1 if carts: cart = carts.first() print('cart exist') cart.number = cart.number +1 cart.save() response_data['goodsnumber'] = cart.number return JsonResponse(response_data) else: print('cart is not exist') cart = Cart() cart.user = user cart.goods = goods cart.number = 1 cart.save() return JsonResponse(response_data) else: response_data['status'] = 0 return JsonResponse(response_data)
def addcart(request): token = request.session.get('token') userid = cache.get(token) goodsid = request.GET.get('goodsid') goodsnum = request.GET.get('goodsnum') # print(goodsid) response_data={ 'user':None, } if userid: user = User.objects.get(pk=userid) goods = Goods.objects.get(pk=goodsid) cart = Cart.objects.filter(goods=goods).filter(user=user) if cart.exists(): cart=cart.first() cart.num = cart.num + int(goodsnum) cart.save() else: cart=Cart() cart.goods=goods cart.user=user cart.num = int(goodsnum) cart.save() # response_data['user'] = user response_data['user_status'] = 1 response_data['cart_num']=cart.num # response_data['goodsid'] = goodsid else: response_data['user_status'] = 0 return JsonResponse(response_data)
def add_to_cart(request): product_id = request.POST.get('product_id') if request.user.is_authenticated == False: return redirect(f'/login/?redirect_to=/products/{product_id}/') product = Product.objects.get(pk=product_id) carts = Cart.objects.filter( user_id=request.user.id).order_by('-created_on') if carts.exists(): cart = carts[0] else: cart = Cart(user_id=request.user.id) cart.save() cartItems = cart.cartitem_set.filter(product_id=product_id) if cartItems.exists(): cartItem = cartItems[0] cartItem.quantity = cartItem.quantity + 1 cartItem.total = product.unit_price * cartItem.quantity else: cartItem = CartItem(cart=cart, product=product, quantity=1, unit_price=product.unit_price, total=product.unit_price * 1) cartItem.save() return redirect(product_detail, id=product_id)
def addcart(request): #获取token token = request.session.get('token') #响应数据 response_data = {} # 缓存 if token: userid = cache.get(token) if userid: user = User.objects.get(pk=userid) goodsid = request.GET.get('goodsid') goods = Goods.objects.get(pk=goodsid) carts = Cart.objects.filter(user=user).filter(goods=goods) if carts.exists(): cart = carts.first() cart.number = cart.number + 1 cart.save() else: cart = Cart() cart.user = user cart.goods = goods cart.number = 1 cart.save() response_data['status'] = 1 response_data['number'] = cart.number response_data['msg'] = '添加{} 购物车成功,数量为:{}'.format( cart.goods.productlongname, cart.number) return JsonResponse(response_data) response_data['status'] = -1 response_data['msg'] = '请登录后操作' return JsonResponse(response_data)
def addcart(request): token = request.session.get('token') goodsid = request.GET.get('goodsid') data = {} if token: user = User.objects.get(token=token) goods = Goods.objects.get(pk=goodsid) carts = Cart.objects.filter(user=user).filter(goods=goods) if carts.exists(): cart = carts.first() cart.number = cart.number + 1 cart.save() else: cart = Cart() cart.user = user cart.goods = goods cart.number = 1 cart.save() return JsonResponse({ 'msg': '{},添加购物车成功'.format(goods.productlongname), 'number': cart.number, 'status': 1 }) else: data['msg'] = '请登录后操作!' data['status'] = -1 return JsonResponse(data)
def addcart(request): token = request.session.get('token') userid = cache.get(token) user = None if userid: user = User.objects.get(pk=userid) goodsid = request.GET.get('goodsid') goods = Goods.objects.get(pk=goodsid) cart = Cart() carts = Cart.objects.filter(goods=goods).filter(user=user) if carts.exists(): cart = carts.first() cart.number = int(cart.number) + int(request.GET.get('num')) cart.total = float(cart.goods.price[1:]) * int(cart.number) cart.save() else: cart.user = user cart.goods = goods cart.number = request.GET.get('num') cart.total = float(goods.price[1:]) * int(cart.number) cart.save() # 统计 carts = Cart.objects.filter(user=user) sum = 0 num = 0 for cart in carts: sum += float(cart.goods.price[1:]) * int(cart.number) num += cart.number data = {'status': 1, 'msg': '加入购物车成功!', 'num': num, "sum": sum} else: data = {'status': 0, 'msg': '未登录!'} return JsonResponse(data)
def addcart(request): goodsid = request.GET.get('goodsid') token = request.session.get('token') responseData = {'msg': '添加购物车成功', 'status': 1} if token: # 已登录 user = User.objects.get(token=token) goods = Goods.objects.get(pk=goodsid) # 判断商品是否在购物车中 carts = Cart.objects.filter(user=user).filter(goods=goods) if carts.exists(): cart = carts.first() cart.number = cart.number + 1 cart.save() responseData['number'] = cart.number else: cart = Cart() cart.user = user cart.goods = goods cart.number = 1 cart.save() responseData['number'] = cart.number return JsonResponse(responseData) else: # 未登录 responseData['msg'] = '请登录后操作' responseData['status'] = -1 return JsonResponse(responseData)
def addcart(request): goodsid = request.GET.get('goodsid') token = request.session.get('token') userid = cache.get(token) if userid: user = User.objects.get(pk=userid) goods = Goods.objects.get(id=goodsid) carts = Cart.objects.filter(user=user).filter(goods=goods) if carts.exists(): cart = carts.first() cart.number = cart.number + 1 cart.save() else: cart = Cart() cart.user = user cart.goods = goods cart.number = 1 cart.save() response_data = {'msg': '成功添加商品', 'status': 1, 'number': cart.number} else: response_data = {'msg': '未登录', 'status': -1} return JsonResponse(response_data)
def addCart(request): gid = request.GET.get('gid') #获取用户是否登录 uid = request.session.get('uid') data = { 'code': 0, 'msg': 'ok', } if not uid: # 用户未登录 data['code'] = '-1' #用户未登录 data['msg'] = '用户未登录' else: # 查询购物车中是否由该商品,如果有,数量加1 carts = Cart.objects.filter(goods_id=gid).filter(user_id=uid) if carts.exists(): cart = carts.first() cart.num += 1 else: # 没有则创建 cart = Cart() cart.user_id = uid cart.goods_id = gid cart.num += 1 cart.save() data['num'] = cart.num return JsonResponse(data)
def addcart(request): booksid=request.GET.get('booksid') token=request.session.get('token') print(booksid) data={} if token: user=User.objects.get(token=token) books = Books.objects.get(pk=booksid) carts=Cart.objects.filter(user=user).filter(books=books) if carts.exists(): cart=carts.first() cart.number=cart.number+1 cart.save() else: cart=Cart() cart.user=user cart.books=books cart.number=1 cart.save() return JsonResponse({'msg':'{},添加购物车成功'.format(books.productname),'number':cart.number,'status':1}) else: data['msg']="please login!" data['status']=-1 return JsonResponse(data)
def addtocart(request): username = request.session.get('username') data = {'status': '200', 'msg': 'ok'} # ajax请求的,则返回的也是返回到ajax,判断用户是否登录 if not username: data['status'] = '302' data['msg'] = '用户未登录' return JsonResponse(data) # 获取到商品的id goodsid = request.GET.get('goodsid') # 找到对应的商品 goods = MarketGoods.objects.filter(pk=goodsid).first() user = User.objects.filter(u_name=username).first() # 从购物车里检索这个商品,如果有的话,数量加1,如果没有就新建一个 cart_item = Cart.objects.filter(c_user=user).filter(c_goods=goods).filter( c_belong=False).first() if not cart_item: cart_item = Cart() else: cart_item.c_num = cart_item.c_num + 1 cart_item.c_goods = goods cart_item.c_user = user cart_item.save() data['c_num'] = cart_item.c_num return JsonResponse(data)
def add_cart(request): token = request.session.get('token') userid = cache.get(token) goodsid = request.GET.get('goodsid') number = int(request.GET.get('number')) print(number) if userid: user = User.objects.get(pk=userid) goods = Goods.objects.get(pk=goodsid) cart = Cart.objects.filter(user=user).filter(goods=goods) if cart.exists(): cart = cart.first() cart.number = cart.number + number cart.save() else: cart = Cart() cart.user = user cart.goods = goods cart.number = number cart.save() return JsonResponse({'msg': '{}-添加购物车成功,数量为-{}'.format(cart.goods.name, cart.number), 'status': 1}) else: return JsonResponse({'msg': '请先登录,后操作', 'status': 0})
def quicklybuy(request): token = request.session.get('token') response_data = {} if token: userid = cache.get(token) if userid: # 已经登录 user = User.objects.get(pk=userid) goodsid = request.GET.get('goodsid') num = int(request.GET.get('number1')) goods = Goods.objects.get(pk=goodsid) carts = Cart.objects.filter(user=user).filter(goods=goods) if carts.exists(): cart = carts.first() cart.number = cart.number + num cart.save() else: cart = Cart() cart.user = user cart.goods = goods cart.number = num cart.save() response_data['status'] = 1 response_data['number'] = cart.number response_data['msg'] = '添加 {} 购物车成功: {}'.format(cart.goods.productname, cart.number) return JsonResponse(response_data) response_data['status'] = -1 response_data['msg'] = '请登录后操作' return JsonResponse(response_data)
def addcart(request): token = request.session.get('token') # 响应数据 response_data = {} if token: userid = cache.get(token) if userid: # 已经登录 user = User.objects.get(pk=userid) goodsid = request.GET.get('goodsid') goods = Goods.objects.get(pk=goodsid) number = request.GET.get('number') print(number) # 商品不存在: 添加新记录 # 商品存在: 修改number carts = Cart.objects.filter(user=user).filter(goods=goods) cart = Cart() cart.user = user cart.goods = goods cart.number = number cart.save() response_data = '添加 {} 购物车成功: {}'.format(cart.goods, cart.number) return JsonResponse(response_data)
def addgoods(request): token = request.session.get('token') response_data = {} if token: userid = cache.get(token) if userid: user = User.objects.get(pk=userid) goodsid = request.GET.get('goodsid') goodsnum = int(request.GET.get('goodsNum')) goods = GOODs.objects.get(pk=goodsid) # 判断需要添加的商品是否已经存在 carts = Cart.objects.filter(user=user).filter(goods=goods) if carts.exists(): cart = carts.first() cart.number += goodsnum cart.save() else: cart = Cart() cart.user = user cart.goods = goods cart.number = goodsnum cart.save() response_data['status'] = 1 response_data['number'] = cart.number response_data['msg'] = '添加{}购物车成功:{}'.format( cart.goods.productlongname, cart.number) return JsonResponse(response_data) response_data['status'] = -1 response_data['msg'] = '请登录后操作' return JsonResponse(response_data)
def change_item_qty(request): try: cart_id = request.session[ 'cart_id'] # Получение значения сессии при помощи ключа(то есть, 'cart_id'). cart = Cart.objects.get(id=cart_id) request.session['total'] = cart.items.count() except: cart = Cart() cart.save() cart_id = cart.id request.session['cart_id'] = cart_id # Передача значения в сессию cart = Cart.objects.get(id=cart_id) qty = request.GET.get('qty') item_id = request.GET.get('item_id') cart.change_qty(qty, item_id) cart_item = CartItem.objects.get(id=int(item_id)) cart_item.qty = int(qty) cart_item.item_total = int(qty) * Decimal(cart_item.product.price) cart_item.save() return JsonResponse({ 'cart_total': cart.items.count(), 'item_total': cart_item.item_total, 'cart_total_price': cart.cart_total })
def cart_session(request): try: cart_id = request.session['cart_id'] cart = Cart.objects.get(pk=cart_id) request.session['total'] = cart.items.count() except: cart = Cart() cart.save() cart_id = cart.id request.session['cart_id'] = cart_id cart = Cart.objects.get(id=cart_id) return cart
def addcart(request): # 思路 # 将ajax请求的goodsid获取 # 即当前用户点击的那个商品 # goodsid # 找到对应的商品 goodsid = request.GET.get('goodsid') print(goodsid) # 用户--- token = request.session.get('token') responseData = {'msg': '', 'status': ''} if token: # 登录 user = User.objects.get(token=token) print(user.name) goods = Goods.objects.get(pk=goodsid) print(goods.productname) carts = Cart.objects.filter(goods=goods).filter(user=user) if carts.exists(): # 存在 # 取第一个 cart = carts.first() cart.number = cart.number + 1 # 如果库存数量比我添加的数据还要小 # 那么添加的数据只能为库存数量 if goods.storenums < cart.number: cart.number = goods.storenums cart.save() responseData['msg'] = '添加购物车成功' responseData['status'] = 1 responseData['number'] = cart.number return JsonResponse(responseData) else: # 不存在 cart = Cart() cart.user = user cart.goods = goods cart.number = 1 cart.save() responseData['msg'] = '添加购物车成功' responseData['status'] = 1 responseData['number'] = cart.number return JsonResponse(responseData) else: # 未登录 # ajax请求操作,是重定向不了的! # return redirect('axf:login') responseData['msg'] = '请登录后操作' responseData['status'] = '-1' return JsonResponse(responseData)
def get_cart(request): try: cart_id = request.session['cart_id'] cart = Cart.objects.get(id=int(cart_id)) request.session['count'] = cart.items.count() return cart except: cart = Cart() cart.save() request.session['cart_id'] = cart.id cart = Cart.objects.get(id=cart.id) return cart
def checkout_view(request): try: cart_id = request.session[ 'cart_id'] # Получение значения сессии при помощи ключа(то есть, 'cart_id'). cart = Cart.objects.get(id=cart_id) request.session['total'] = cart.items.count() except: cart = Cart() cart.save() cart_id = cart.id request.session['cart_id'] = cart_id # Передача значения в сессию cart = Cart.objects.get(id=cart_id) context = {'cart': cart} return render(request, 'app/checkout.html', context)
def addcart(request): token = request.session.get('token') goodid = request.GET.get('goodid') if token: userid = cache.get(token) user = User.objects.get(pk=userid) goods = Goods.objects.get(pk=goodid) carts = Cart.objects.filter(user=user).filter(goods=goods) # print(user,goods,carts) # print(type(user)) if carts.exists(): # print(111111111) cart = carts.first() # print(222222222) cart.number = cart.number + 1 # print(333333333) cart.save() else: # print(4444444444444) cart = Cart() # print(5555555555) cart.user = user # print(6666666666) cart.goods = goods # print(7777777777777777) cart.number = 1 # print(888888888888) cart.save() return JsonResponse({ 'msg': '{}-加入购物车-数量为-{}'.format(cart.goods.productlongname, cart.number), 'status': 1, 'number': cart.number }) else: return JsonResponse({'msg': '请先登录,再进行操作', 'status': 0})
def shopping(request): data = {} if request.method == 'GET': token = request.session.get('token') if token: user = User.objects.get(token=token) cart = Cart.objects.filter(user=user).filter(is_delete=0) data['cart_num'] = cart.count() data['user_name'] = user.name data['cart'] = cart return render(request, 'shopping.html', context=data) else: return render(request, 'shopping.html') else: token = request.session.get('token') if token: user = User.objects.get(token=token) name = request.POST.get('name') number = request.POST.get('number') price = request.POST.get('price') size = request.POST.get('size') smallimg = request.POST.get('smallimg') carts = Cart.objects.filter(user=user).filter(name=name).filter( smallimg=smallimg) if carts.filter(size=size).filter(is_delete=0).exists(): cart = carts.first() cart.number += eval(number) cart.save() else: cart = Cart() cart.user = user cart.name = name cart.price = price cart.size = size cart.smallimg = smallimg cart.number = number cart.is_delete = 0 cart.save() # 1、 第一次添加的商品是不存在的,要往数据库中添加一条新记录 return JsonResponse({ 'msg': '{},添加购物车成功'.format(name), 'number': cart.number, 'status': 1 }) else: return JsonResponse({'msg': '添加购物车失败,请先登录', 'status': 0})
def order_create_view(request): try: cart_id = request.session[ 'cart_id'] # Получение значения сессии при помощи ключа(то есть, 'cart_id'). cart = Cart.objects.get(id=cart_id) request.session['total'] = cart.items.count() except: cart = Cart() cart.save() cart_id = cart.id request.session['cart_id'] = cart_id # Передача значения в сессию cart = Cart.objects.get(id=cart_id) form = OrderForm(request.POST or None) context = {'form': form, 'cart': cart} return render(request, 'app/order.html', context)
def post(self,request,*args,**kwargs): form = self.form_class(request.POST) if form.is_valid(): form.save() user = get_object_or_404(User, username = form.cleaned_data.get('username')) # Create the cart for the user cart = Cart(user = user) cart.save() # Add the user's email to the news letters try: get_object_or_404(NewsLetters,email = form.cleaned_data.get('email')) except NewsLetters.DoesNotExist: news_letters = NewsLetters(email = form.cleaned_data.get('username')) news_letters.save() messages.success(request,f'You account has been succesfully created, you can sign in now.') return HttpResponseRedirect(reverse('user:signin')) return render(request,self.template_name,{'form':form})
def addtocart(request): token = request.session.get('token') response_data = {} if token: userid = cache.get(token) if userid: # 已经登录 user = User.objects.get(pk=userid) goodsid = request.GET.get('goodid') color = request.GET.get('color') size = request.GET.get('size') number = request.GET.get('number') goods = Goods.objects.get(pk=goodsid) carts = Cart.objects.filter(user=user).filter(goods=goods) if carts.exists(): carts1 = carts.filter(color=color).filter(size=size) if carts1.exists(): cart = carts1.first() cart.number = int(number) + cart.number cart.save() else: cart = Cart() cart.goods = goods cart.user = user cart.number = number cart.size = size cart.color = color cart.save() else: cart = Cart() cart.goods = goods cart.user = user cart.number = number cart.size = size cart.color = color cart.save() response_data['status'] = 1 response_data['msg'] = '添加 购物车成功' return JsonResponse(response_data) else: response_data['status'] = -1 response_data['msg'] = '请登录后操作' return JsonResponse(response_data)
def addcart(request): # 获取token >> user token = request.session.get('token') # 获取商品id goodsid = request.GET.get('goodsid') print(goodsid) data = {} if token: # 登录 # 获取用户 user = User.objects.get(token=token) # 获取商品 goods = Goods.objects.get(pk=goodsid) # 1、 第一次添加的商品是不存在的,要往数据库中添加一条新记录 # 2、 商品已存在,即修改商品数量 # 判断需要添加的商品是否存在 carts = Cart.objects.filter(user=user).filter(goods=goods) if carts.exists(): # 存在 cart = carts.first() cart.number = cart.number + 1 cart.save() else: # 不存在 cart = Cart() cart.user = user cart.goods = goods cart.number = 1 cart.save() return JsonResponse({ 'msg': '{},添加购物车成功'.format(goods.productlongname), 'number': cart.number, 'status': 1 }) else: # 没登录 # ajax操作中,不能重定向 # ajax异步请求操作,数据的传输 # 即ajax请求,如果想页面跳转(服务器重定向不了),客户端处理 # return redirect('axf:login') data['msg'] = '请登录后操作!' data['status'] = -1 return JsonResponse(data)
def addcart(request): # 获取token token = request.session.get('token') # 响应数据 response_data = {} # 缓存 if token: userid = cache.get(token) if userid: # 已经登录 user = User.objects.get(pk=userid) goodsid = request.GET.get('goodsid') goods = Goods.objects.get(pk=goodsid) # 商品不存在: 添加新记录 # 商品存在: 修改number carts = Cart.objects.filter(user=user).filter(goods=goods) if carts.exists(): cart = carts.first() cart.number = cart.number + 1 cart.save() else: cart = Cart() cart.user = user cart.goods = goods cart.number = 1 cart.save() response_data['status'] = 1 response_data['number'] = cart.number response_data['msg'] = '添加 {} 购物车成功: {}'.format( cart.goods.productlongname, cart.number) return JsonResponse(response_data) # 未登录 # 因为是ajax操作,所以重定向是不可以的! # return redirect('axf:login') response_data['status'] = -1 response_data['msg'] = '请登录后操作' return JsonResponse(response_data)
def process_order(request): print "placing order" try: phone_number = request.POST.get("phone_number") user_name = request.POST.get("userName") email = request.POST.get("email") app_version = request.POST.get("app_version") device_id = request.POST.get("device_id") app_id = request.POST.get("app_id") bring_change_of = int(request.POST.get("bring_change_of", "0")) address_str = request.POST.get("address") landmark = request.POST.get("landmark") location_show = request.POST.get("location_show") location_id = request.POST.get("location_id") api_key = request.POST.get("api_key") products = request.POST.get("products") tomorrow = request.POST.get("tomorrow") delivery_time = request.POST.get("delivery_time") # print request coupon_id = int(request.POST.get("coupon_id", "0")) coupon = None print "coupon" print phone_number user = User.objects.get(username=phone_number) if user: user.email = email user.first_name = user_name.title() user.save() user_profile = user.userprofile user_profile.app_version = app_version user_profile.app_id = app_id user_profile.device_id = device_id user_profile.save() if user.api_key.key != api_key: print "api key is not valid" data = simplejson.dumps({"status": "Not Valid Request"}) return HttpResponse(data, content_type="application/json", status=403) else: print "User not found" data = simplejson.dumps({"status": "Not Valid Request"}) return HttpResponse(data, content_type="application/json", status=403) print "user obj created" print coupon_id if coupon_id > 0: coupon = Coupon.objects.get(pk=coupon_id) coupon.used_count += 1 coupon.save() print coupon prev_order = Order.objects.filter(coupon_applied=coupon, user=user) print user if prev_order: if prev_order[0].status != 1: print "coupon invalidation1" coupon = None print coupon print "check for coupon" location = Location.objects.get(pk=location_id) address = Address.objects.filter(user=user, address=address_str, landmark=landmark) if address: address = address[0] address.location = location address.save() else: address = Address( user=user, address=address_str, landmark=landmark, location_show=location_show, location=location ) address.save() print "address done" # print products products = products.split(",") product_ids = map(lambda x: x.split("::")[0], products) product_qns = map(lambda x: x.split("::")[1], products) print product_ids print product_qns order = Order(user=user, total_amount=0, address=address, status=3) if tomorrow == "1": print delivery_time if dt.datetime.now().hour > 20: order.delivery_time = dt.datetime.strptime( str((dt.datetime.now() + dt.timedelta(days=1)).date()) + " " + delivery_time, "%Y-%m-%d %I:%M %p" ) else: order.delivery_time = dt.datetime.strptime( str(dt.datetime.now().date()) + " " + delivery_time, "%Y-%m-%d %I:%M %p" ) else: order.delivery_time = dt.datetime.now() + dt.timedelta(hours=1) if bring_change_of: order.change_requested = bring_change_of order.save() invoice = Invoice(order=order, product_json="") invoice.save() print "order obj saved" total_amount = 0 index = 0 ordered_services = {} products_json = [] for p_id in product_ids: prd = StoreProductMapping.objects.get(pk=p_id) products_json.append( { "spid": prd.id, "pid": prd.product.product.id, "name": prd.product.product.name, "price": prd.price, "discount": prd.discount, "qn": product_qns[index], "size_id": prd.product.size.id, } ) service = prd.product.product.category.service if "offer" in service.name.lower(): OfferDeviceId(device_id=device_id).save() OfferProductOrderMapping( device_id=device_id, order=order, offer_product=prd.offerproductmapping_set.all()[0] ).save() if str(service.id) not in ordered_services: ordered_services[str(service.id)] = 0 total_amount += int(product_qns[index]) * (prd.price - prd.discount) ordered_services[str(service.id)] += int(product_qns[index]) * (prd.price - prd.discount) store = prd.store cart = Cart.objects.filter(order=order, store=store) if cart: cart = cart[0] else: cart = Cart(order=order, store=store) cart.save() OrderedProduct(product=prd, cart=cart, quantity=product_qns[index]).save() index += 1 products_json = simplejson.dumps(products_json) invoice.product_json = products_json invoice.save() service_amount_ordered = [] for key in ordered_services: service_amount_ordered.append(str(key) + ":" + str(ordered_services[key])) service_amount_ordered = ";;".join(service_amount_ordered) print total_amount final_amount = total_amount if coupon: if total_amount >= coupon.min_total: order.coupon_applied = coupon print "found coupon" print coupon.code print coupon print user print location_id print int(app_version) print final_amount print service_amount_ordered discount = verify_coupon( coupon, user, location_id, int(app_version), final_amount, service_amount_ordered )["discount"] print "discount" + str(discount) final_amount -= discount print "passed coupon part" delivery_charges = {} for key in ordered_services: service = Service.objects.get(pk=key) lsm = LocationServiceMapping.objects.filter(service=service, location=location) if lsm: lsm = lsm[0] stl = StoreTimingInLocation.objects.filter(store__is_active=True, is_active=True, lsm=lsm) print "done" if stl: stl = stl[0] if key not in delivery_charges: delivery_charges[key] = {"delivery_charges": 0, "delivery_amount_min": stl.delivery_min_amount} if ordered_services[key] < stl.delivery_min_amount: final_amount += -stl.delivery_charges total_amount += stl.delivery_charges delivery_charges[key]["delivery_charges"] = stl.delivery_charges else: delivery_charges[key] = {"delivery_charges": 0, "delivery_amount_min": 0} else: delivery_charges[key] = {"delivery_charges": 0, "delivery_amount_min": 0} print "passed delivery part" order.total_amount = total_amount order.final_amount = final_amount order.delivery_charges = simplejson.dumps(delivery_charges) order.save() OrderActivity(order=order, user=order.user, actions=0, comment=" ").save() data = simplejson.dumps({"status": "done"}) return HttpResponse(data, content_type="application/json", status=201) except Exception as process_order_function_error: print "process_order: " + str(process_order_function_error) data = simplejson.dumps({"status": "Server Error"}) send_mail( "Order placing Error " + str(process_order_function_error), str(request) + "\n\n\n" + str(simplejson.dumps(request.POST)), "*****@*****.**", ["*****@*****.**"], fail_silently=False, ) return HttpResponse(data, content_type="application/json", status=500)
def obj_create(self, bundle, request=None, **kwargs): # data={'status':'cant place order'} # return HttpResponse(data, content_type='application/json') print bundle.data phone_number = bundle.data['phone_number'] userName = bundle.data['userName'] email = bundle.data['email'] app_version = bundle.data['app_version'] device_id = bundle.data['device_id'] app_id = bundle.data['app_id'] bring_change_of = int(bundle.data['bring_change_of']) address_str = bundle.data['address'] landmark = bundle.data['landmark'] location_show = bundle.data['location_show'] location_id = bundle.data['location_id'] coupon_id ="" try: coupon_id = int(bundle.data['coupon_id']) except: pass coupon=None print 'coupon' print phone_number user = User.objects.filter(username=phone_number) print user print '----' if user: user=user[0] user.email = email user.first_name=userName.title() user.save() print 'user saved' userProfile =UserProfile.objects.filter(user=user) print 'userprofile' print userProfile print '----' if userProfile: userProfile = userProfile[0] userProfile.app_version=app_version userProfile.app_id=app_id userProfile.device_id=device_id userProfile.save() else: UserProfile(user=user,contact=int(phone_number),app_id=app_id,app_version=app_version,device_id=device_id).save() else: user=User.objects.create_user(phone_number,email,phone_number) user.first_name=userName.title() user.save() UserProfile(user=user,contact=int(phone_number),app_id=app_id,app_version=app_version,device_id=device_id).save() print 'user obj created' print coupon_id if coupon_id>0: coupon = Coupon.objects.get(pk=coupon_id) coupon.used_count+=1 coupon.save() print coupon prev_order = Order.objects.filter(coupon_applied=coupon,user=user) print user if prev_order: if prev_order[0].status!=1: print 'coupon invalidation1' coupon=None print coupon print 'check for coupon' location = Location.objects.get(pk=location_id) address = Address.objects.filter(user =user ,address=address_str,landmark=landmark) if address: address=address[0] else: address = Address(user =user ,address=address_str,landmark=landmark,location_show=location_show,location=location ) address.save() print 'address done' products = bundle.data['products'] # print products products = products.split(',') product_ids = map(lambda x:x.split('::')[0],products) product_qns = map(lambda x:x.split('::')[1],products) print product_ids print product_qns order = Order(user = user,total_amount=0,address=address,status=3) order.delivery_time=dt.datetime.now()+dt.timedelta(hours=1) order.save() print 'order obj saved' total_amount = 0 index=0 ordered_services={} products_json=[] for p_id in product_ids: prd = StoreProductMapping.objects.get(pk=p_id) products_json.append({'spid':prd.id,'pid':prd.product.product.id,'name':prd.product.product.name,'price':prd.price,'discount':prd.discount,'qn':product_qns[index],'size_id':prd.product.size.id}) service = prd.product.product.category.service if 'offer' in service.name.lower(): OfferProductOrderMapping(device_id=device_id,order=order,offer_product=prd.offerproductmapping_set.all()[0]).save() OfferDeviceId(device_id=device_id).save() if str(service.id) not in ordered_services: ordered_services[str(service.id)]= 0 total_amount+= int(product_qns[index])*(prd.price- prd.discount) ordered_services[str(service.id)]+= int(product_qns[index])*(prd.price- prd.discount) store = prd.store cart = Cart.objects.filter(order=order,store=store) if cart: cart=cart[0] else: cart = Cart(order=order,store=store) cart.save() OrderedProduct(product=prd,cart=cart,quantity=product_qns[index]).save() index+=1 service_amount_ordered=[] for key in ordered_services: service_amount_ordered.append(str(key)+":"+str(ordered_services[key])) service_amount_ordered=';;'.join(service_amount_ordered) print total_amount final_amount=total_amount if coupon: if total_amount>=coupon.min_total: order.coupon_applied=coupon print 'found coupon' print coupon.code print coupon print user print location_id print int(app_version) print final_amount print service_amount_ordered discount = verify_coupon(coupon,user,location_id,int(app_version),final_amount,service_amount_ordered)['discount'] print "discount" + str(discount) final_amount-=discount print "passed coupon part" delivery_charges = 0 delivery_charges_to_save_in_order={} for key in ordered_services: service=Service.objects.get(pk=key) lsm = LocationServiceMapping.objects.filter(service=service,location=location) if lsm: lsm=lsm[0] stl = StoreTimingInLocation.objects.filter(store__is_active=True,is_active=True,lsm=lsm) print 'done' if stl: stl=stl[0] # print 'done1' if key not in delivery_charges_to_save_in_order: # print 'done10' delivery_charges_to_save_in_order[key]={'delivery_charges':0,'delivery_amount_min':stl.delivery_min_amount} # print 'done11' if ordered_services[key]<stl.delivery_min_amount: # print 'done20' final_amount+=-stl.delivery_charges total_amount+=stl.delivery_charges # print 'done21' delivery_charges_to_save_in_order[key]['delivery_charges']=stl.delivery_charges # print 'done22' else: delivery_charges_to_save_in_order[key]={'delivery_charges':0,'delivery_amount_min':0} else: delivery_charges_to_save_in_order[key]={'delivery_charges':0,'delivery_amount_min':0} print "passed delivery part" order.total_amount=total_amount order.final_amount=final_amount if bring_change_of: order.change_requested=bring_change_of order.delivery_charges = simplejson.dumps(delivery_charges_to_save_in_order) order.save() products_json=simplejson.dumps(products_json) Invoice(order=order,product_json=products_json).save() bundle.obj=order OrderActivity(order=order,user=order.user,actions=0,comment=" ").save() print bundle return bundle