def apply_coupon(request): if request.method == 'POST': if request.user.is_authenticated(): context = {} data = JSONParser().parse(request) user = request.user coupon_code = data['coupon_code'] try: coupon = Discount.objects.get(coupon_code=coupon_code) except Discount.DoesNotExist: return Response({'error': 'Coupon Does Not Exist'}) try: order = Order.objects.get(id=request.session.get('order_id')) except Order.DoesNotExist: order = None if order: if coupon.start_date is not None and coupon.end_date is not None: if coupon.start_date <= date.today() <= coupon.end_date: context = get_cart_details(request, context, coupon) else: return Response({'error': 'Coupon Expired'}) else: context = get_cart_details(request, context, coupon) log.info(context['coupon_code']) if context['coupon_code']: cart_values = {} cart_values['total'] = context['total'] cart_values['discount_price'] = context['discount_price'] cart_values['cart_total'] = context['cart_total'] return Response({ 'success': 'Coupon Applied', 'coupon_code': coupon.coupon_code, 'cart_values': cart_values }) else: return Response({'error': 'Invalid Coupon Code'}) else: return Response({'error': 'Coupon Expired'}) else: return Response({'error': 'Authentication failed'})
def remove_coupon(request): if request.method == 'POST': if request.user.is_authenticated(): context = {} data = JSONParser().parse(request) user = request.user coupon_code = data['coupon_code'] try: coupon = Discount.objects.get(coupon_code=coupon_code) except Discount.DoesNotExist: return Response({'error': 'Coupon Does Not Exist'}) try: order = Order.objects.get(id=request.session.get('order_id')) except Order.DoesNotExist: order = None order.discount_id_id = None order.discount_price = 0 order.save() context = get_cart_details(request, context) coupon.save() cart_values = {} cart_values['total'] = context['total'] cart_values['discount_price'] = context['discount_price'] if 'discount_price' in context else 0 cart_values['cart_total'] = context['cart_total'] return Response({'success': 'Coupon removed', 'cart_values': cart_values}) else: return Response({'error': 'Authentication failed'})
def checkout(request): context = {} context["request"] = request context["user"] = request.user context["categories_all"] = Category.objects.all() context = get_cart_details(request, context) try: context["customer"] = Customer.objects.get(profile=request.user) except Customer.DoesNotExist: context["customer"] = None try: context["retailer"] = Retailer.objects.get(profile=request.user) except Retailer.DoesNotExist: context["retailer"] = None if context["customer"] and context["retailer"] is None: return redirect("/accounts/profile/?created_profile=false") try: if request.session.get("order_id"): context["shipping_address"] = OrderShippingAddress.objects.get( user=request.user, order_id=request.session.get("order_id") ) else: context["shipping_address"] = None except OrderShippingAddress.DoesNotExist: context["shipping_address"] = None return render(request, "orders/checkout.html", context)
def details(request, id): context = {} context["request"] = request context["user"] = request.user context["categories_all"] = Category.objects.all() context = get_cart_details(request, context) context["order_notes"] = None try: context["customer"] = Customer.objects.get(profile=request.user) except Customer.DoesNotExist: context["customer"] = None try: context["retailer"] = Retailer.objects.get(profile=request.user) except Retailer.DoesNotExist: context["retailer"] = None try: products_bought = OrderItem.objects.filter(order__user=request.user, order_status=3) context["products_bought"] = len(products_bought) except Exception as e: log.info("Exception : {0}".format(e)) context["products_bought"] = 0 context["shipping_address"] = OrderShippingAddress.objects.get(order_id=context["order_seller"].order.id) return render(request, "orders/details.html", context)
def dashboard(request): context = {} str_title="" context['request'] = request context['user'] = request.user context['categories_all'] = Category.objects.all() context = get_cart_details(request, context) str_title=context['user'].first_name+" -Customer Dashboard|Customer profile" context['page_title'] = str_title try: context['customer'] = Customer.objects.get(profile=request.user) except Customer.DoesNotExist: context['customer'] = None if request.user.id is not None: context['orders'] = Order.objects.filter(user=request.user, order_options='2') try: products_bought = OrderItem.objects.filter(order__user=request.user, order_status=3) context['products_bought'] = len(products_bought) except Exception as e: log.info("Exception : {0}".format(e)) context['products_bought'] = 0 log.info(context['orders']) return render(request, 'user/dashboard.html', context)
def update_cart(request): if request.method == 'POST': if request.user.is_authenticated(): data = JSONParser().parse(request) context = {} id = data['cart_id'] quantity = data['quantity'] user = request.user try: cart = Cart.objects.get(id=id) except Cart.DoesNotExist: return HttpResponse(status=status.HTTP_404_NOT_FOUND) cart.save() cart_quantity = cart.quantity context = get_cart_details(request, context) cart_details = dict() cart_details['cart_total'] = context['cart_total'] cart_details['quantity'] = cart_quantity cart_details['shipping_price'] = context['shipping_price'] cart_details['total'] = context['total'] cart_details['item_price'] = cart.product.price*float(cart_quantity) cart_details['discount_price'] = context['discount_price'] if 'discount_price' in context else 0 return Response({'cart': cart_details}, status=status.HTTP_201_CREATED) else: return Response({'error': 'Authentication failed'})
def profile(request): context = {} str_title = "" context["request"] = request context["user"] = request.user context["categories_all"] = Category.objects.all() context["is_current_user"] = True context = get_cart_details(request, context) str_title = "Profile-" + context["user"].first_name + " " + context["user"].last_name context["page_title"] = str_title try: context["customer"] = Customer.objects.get(profile=context["user"].id) except Customer.DoesNotExist: context["customer"] = None try: context["retailer"] = Retailer.objects.get(profile=context["user"].id) except Retailer.DoesNotExist: context["retailer"] = None if request.GET.get("created_profile") and context["customer"] and context["retailer"] is None: context["show_buyer_profile_warning"] = True try: products_bought = OrderItem.objects.filter(order__user=request.user, order_status=3) context["products_bought"] = len(products_bought) except Exception as e: log.info("Exception : {0}".format(e)) context["products_bought"] = 0 return render(request, "accounts/profile.html", context)
def create_order(request): if request.method == "POST": data = JSONParser().parse(request) context = {} user = request.user context = get_cart_details(request, context) if "total" in context: order, created = Order.objects.update_or_create(user=user, order_options="1") order.cart_total = context["cart_total"] order.shipping_total = context["shipping_price"] order.order_total = context["total"] order.save() request.session["order_id"] = order.id return Response({"order_id": order.id}) else: Response({"error": "Something went wrong"})
def remove_cart(request): if request.method == 'POST': data = JSONParser().parse(request) id = data['cart_id'] try: cart = Cart.objects.get(id=id) except Cart.DoesNotExist: return HttpResponse(status=status.HTTP_404_NOT_FOUND) cart.delete() context = {} context = get_cart_details(request, context) # is_cod_available = chec_cod_availability(request) cart_details = dict() # cart_details['is_cod_available'] = is_cod_available cart_details['cart_total'] = context['cart_total'] cart_details['shipping_price'] = context['shipping_price'] cart_details['total'] = context['total'] cart_details['discount_price'] = context['discount_price'] if 'discount_price' in context else 0 return Response({'cart': cart_details})