Exemplo n.º 1
0
    def retrieve(self, request, pk=None):
        """
        detail cartItem for other user
        :param request:
        :param pk:
        :return:
        """
        try:
            obj = cacheCart(request, f'cart-{request.user.email}', Cart,
                            request.user)

            # this is for select is_pay = False object, that means thay that dont payment
            cart_obj = obj.get(is_pay=False)
            cart_items = cacheCartItem(request,
                                       f'cartItem-{cart_obj.user.email}',
                                       CartItem, cart_obj)

            # this is for select CartItem object that is in user cart that is_pay = False
            queryset = cart_items.get(pk=pk)
            serializer = CartItemDetailSerializers(
                queryset, context={'request': request})
            return response.SuccessResponse(serializer.data).send()
        except CustomException as e:
            return response.ErrorResponse(message=e.detail,
                                          status=e.status_code).send()
Exemplo n.º 2
0
 def destroy(self, request, pk=None):
     try:
         obj = cacheCart(request, f'cart-{request.user.email}', Cart,
                         request.user)
         cart = obj.filter(is_pay=False, user=request.user, pk=pk).first()
         cart.delete()
         return response.SuccessResponse(message='Delete object').send()
     except CustomException as e:
         return response.ErrorResponse(message=e.detail,
                                       status=e.status_code).send()
Exemplo n.º 3
0
 def update(self, request, pk=None):
     try:
         obj = cacheCart(request, f'cart-{request.user.email}', Cart,
                         request.user)
         cart = obj.get(is_pay=False, user=request.user, pk=pk)
         serializer = CartInputSerializers(cart, data=request.data)
         if serializer.is_valid():
             serializer.save(user=request.user)
             return response.SuccessResponse(serializer.data).send()
     except CustomException as e:
         return response.ErrorResponse(message=e.detail,
                                       status=e.status_code).send()
Exemplo n.º 4
0
    def destroy(self, request, pk=None):
        try:
            obj = cacheCart(request, f'cart-{request.user.email}', Cart,
                            request.user)
            # this is for select is_pay = False object, that means thay that dont payment
            cart = obj.get(is_pay=False)
            cart_items = cacheCartItem(request, f'cartItem-{cart.user.email}',
                                       CartItem, cart)

            # this is for select CartItem objects that are in user cart that is_pay = False
            queryset = cart_items.get(pk=pk)
            queryset.delete()
            return response.SuccessResponse(message='Delete object').send()
        except CustomException as e:
            return response.ErrorResponse(message=e.detail,
                                          status=e.status_code).send()
Exemplo n.º 5
0
 def retrieve(self, request, pk=None):
     """
     detail cart
     :param request:
     :param pk:
     :return:
     """
     try:
         obj = cacheCart(request, f'cart-{request.user.email}', Cart,
                         request.user)
         cart = obj.get(is_pay=False, user=request.user, pk=pk)
         serializer = CartDetailSerializers(cart,
                                            context={'request': request})
         return response.SuccessResponse(serializer.data).send()
     except CustomException as e:
         return response.ErrorResponse(message=e.detail,
                                       status=e.status_code).send()
Exemplo n.º 6
0
 def list(self, request):
     """
            other user can show list carts that is_pay=False
            show user just one cart that is_pay = False
            Indeed, user cant create more than one cart
            :param request:
            :return:
     """
     try:
         obj = cacheCart(request, f'cart-{request.user.email}', Cart,
                         request.user)
         queryset = obj.filter(is_pay=False)
         serializer = CartListSerializers(queryset,
                                          context={'request': request},
                                          many=True)
         return response.SuccessResponse(serializer.data).send()
     except CustomException as e:
         return response.ErrorResponse(message=e.detail,
                                       status=e.status_code).send()
Exemplo n.º 7
0
    def create(self, request):
        """
        when create owner user is request.user and is_pay=False
        create CartItem object for your cart that is_pay = False
        :param request:
        :return:
        """
        try:
            serializer = CartItemInputSerializers(data=request.data)

            # get user cart for add created object to your cart
            obj_cart = cacheCart(request, f'cart-{request.user.email}', Cart,
                                 request.user)
            cart = obj_cart.get(is_pay=False)
            if serializer.is_valid():
                serializer.save(cart=cart)
                return response.SuccessResponse(serializer.data).send()
        except CustomException as e:
            return response.ErrorResponse(message=e.detail,
                                          status=e.status_code).send()
Exemplo n.º 8
0
    def retrieve(self, request, pk=None):
        """
        just for user that is_pay=True
        and superuser can show all carts that is_pay=True
        :param request:
        :param pk:
        :return: detail carts that is_pay=True
        """
        try:
            if request.user.is_superuser:
                cart_obj = Cart.objects.get(pk=pk, is_pay=True)
            else:
                obj = cacheCart(request, f'cart-{request.user.email}', Cart,
                                request.user)
                cart_obj = obj.get(is_pay=True, pk=pk)

            serializer = FactorDetailSerializers(cart_obj)
            return response.SuccessResponse(serializer.data).send()
        except CustomException as e:
            return response.ErrorResponse(message=e.detail,
                                          status=e.status_code).send()
Exemplo n.º 9
0
 def list(self, request):
     """
     just for user
     and superuser can show all carts that is_pay=True
     :param request:
     :return: list carts that is_pay=True
     """
     try:
         if request.user.is_superuser:
             cart_obj = Cart.objects.filter(is_pay=True)
         else:
             obj = cacheCart(request, f'cart-{request.user.email}', Cart,
                             request.user)
             cart_obj = obj.filter(is_pay=True)
         serializer = FactorListSerializers(cart_obj,
                                            context={'request': request},
                                            many=True)
         return response.SuccessResponse(serializer.data).send()
     except CustomException as e:
         return response.ErrorResponse(message=e.detail,
                                       status=e.status_code).send()
Exemplo n.º 10
0
 def update(self, request, pk=None):
     """
     user cant change cart in update
     :param request:
     :param pk:
     :return:
     """
     try:
         obj = cacheCart(request, f'cart-{request.user.email}', Cart,
                         request.user)
         cart = obj.get(is_pay=False)
         cart_items = cacheCartItem(request, f'cartItem-{cart.user.email}',
                                    CartItem, cart)
         queryset = cart_items.get(pk=pk)
         serializer = CartItemInputSerializers(queryset, data=request.data)
         if serializer.is_valid():
             serializer.save(cart=cart)
             return response.SuccessResponse(serializer.data).send()
     except CustomException as e:
         return response.ErrorResponse(message=e.detail,
                                       status=e.status_code).send()
Exemplo n.º 11
0
 def create(self, request):
     """
     when create object user=request.user and is_pay=False
     :param request:
     :return:
     """
     try:
         cart = cacheCart(request, f'cart-{request.user.email}', Cart,
                          request.user)
         len_cart = cart.filter(is_pay=False).count()
         serializer = CartInputSerializers(data=request.data)
         if serializer.is_valid():
             if len_cart == 0:
                 serializer.save(is_pay=False, user=request.user)
                 return response.SuccessResponse(serializer.data).send()
             else:
                 return response.ErrorResponse(
                     message='cart object is_pay == False exist.',
                     status=403).send()
     except CustomException as e:
         return response.ErrorResponse(message=e.detail,
                                       status=e.status_code).send()
Exemplo n.º 12
0
    def list(self, request):
        """
        other user can just see self cartItems object
        show user CartItem list for your cart
        :param request:
        :return:
        """
        try:
            obj = cacheCart(request, f'cart-{request.user.email}', Cart,
                            request.user)
            # this is for select is_pay = False object, that means thay that dont payment
            cart_obj = obj.filter(is_pay=False).first()

            # this is for select CartItem objects that are in user cart that is_pay = False
            query = cacheCartItem(request, f'cartItem-{cart_obj.user.email}',
                                  CartItem, cart_obj)
            serializer = CartItemListSerializers(query,
                                                 context={'request': request},
                                                 many=True)
            return response.SuccessResponse(serializer.data).send()
        except CustomException as e:
            return response.ErrorResponse(message=e.detail,
                                          status=e.status_code).send()