Пример #1
0
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'})
Пример #2
0
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'})
Пример #3
0
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)
Пример #4
0
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)
Пример #5
0
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)
Пример #6
0
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'})
Пример #7
0
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)
Пример #8
0
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"})
Пример #9
0
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})