예제 #1
0
 def get(self, request, category_id):
     """
     Return the list of sub categories
     :param request:
     :param category_id:
     :return:
     """
     try:
         is_all_sub_category = request.GET.get('all', None)
         if is_all_sub_category:
             sub_category_list = SubCategory.objects.filter(category=category_id)
         else:
             user = request.user
             user_type = user.user_type
             if user_type == User.WHOLESALER:
                 products = Product.objects.filter(wholesaler=user, sub_category__category=category_id)
                 sub_category_list = [product.sub_category for product in
                                      products]
                 sub_category_list = set(sub_category_list)
             else:
                 sub_category_list = SubCategory.objects.filter(category=category_id)
         serializer = serializers.SubCategorySerializer(sub_category_list, many=True, context={"user": request.user})
         return Utils.dispatch_success(request, serializer.data)
     except Exception as e:
         print(e)
         return Utils.dispatch_failure(request, 'INTERNAL_SERVER_ERROR', {"error": str(e)})
예제 #2
0
 def post(self, request, sub_category_id):
     """
     creates a new product
     :param request:
     :param sub_category_id: sub_category_id
     :request_data
     {
         "name": "Product_name",
         "category": 10,
         "sub_category": 10,
         "image": 10,
         "price":100.50,
         "quantity":10,
         "p_type": "16 GB, 32 GB, 64 GB",
         "p_color": "Green, Blue, Yellow",
         "description": "It is a secret description"
     }
     :return:
     """
     try:
         data = request.data
         data['wholesaler'] = request.user.id
         serializer = serializers.AddProductSerializer(data=data)
         if serializer.is_valid():
             serializer.save()
         else:
             return Utils.dispatch_failure(request, 'VALIDATION_ERROR', serializer.errors)
         return Utils.dispatch_success(request, serializer.data)
     except Exception as e:
         print(e)
         return Utils.dispatch_failure(request, 'INTERNAL_SERVER_ERROR', {"error": str(e)})
예제 #3
0
    def put(self, request, order_id):
        """
        {
        "order_status" : DELIVERED / PICKUPED
        "paid_by" : CASH / UPI
        "upi_id" : 14621849198541265621
        }
        :param request:
        :param order_id:
        :return:
        """
        try:
            order_item = Order.objects.get(id=order_id)
            data = request.data
            if data.get('order_status'):
                order_item.order_status = data['order_status']
                if data['order_status'] == Order.DELIVERED:
                    order_item.is_delivered = True
                    order_item.delivered_time = datetime.datetime.now()
            if data.get('paid_by'):
                order_item.paid_by = data['paid_by']
            if data.get('upi_id'):
                order_item.upi_id = data['upi_id']
            order_item.save()

            return Utils.dispatch_success(request,
                                          OrderSerializer(order_item).data)
        except Exception as e:
            print(e)
            return Utils.dispatch_failure(request, 'INTERNAL_SERVER_ERROR',
                                          {"error": str(e)})
예제 #4
0
 def put(self, request):
     """
     request_data:{
     "aadhaar_document":2,
     "license_document":3,
     }
     :param request:
     :return:
     """
     try:
         user = request.user
         data = request.data
         if user.user_type == User.DELIVERY_MAN:
             if data.get('aadhaar_document'):
                 user.aadhaar_document = Media.objects.get(
                     id=data['aadhaar_document'])
             if data.get('license_document'):
                 user.license_document = Media.objects.get(
                     id=data['license_document'])
             user.save()
         return Utils.dispatch_success(request, 'SUCCESS')
     except Exception as e:
         print(e)
         return Utils.dispatch_failure(request, 'INTERNAL_SERVER_ERROR',
                                       {"error": str(e)})
예제 #5
0
    def put(self, request, order_id):
        """
        {
        "order_status" : "PACKED"
        "delivery_boy" : 34
        "pickup_address" : "ANy Really Long ADdress"
        }
        :param request:
        :param order_id:
        :return:
        """
        try:
            order_item = Order.objects.get(id=order_id)
            data = request.data
            if data.get('order_status'):
                order_item.order_status = data['order_status']
            if data.get('delivery_boy'):
                order_item.delivery_boy = User.objects.get(id=data['delivery_boy'])
            if data.get('pickup_address'):
                order_item.pickup_address = data['pickup_address']
            order_item.save()

            return Utils.dispatch_success(request, OrderSerializer(order_item).data)
        except Exception as e:
            print(e)
            return Utils.dispatch_failure(request, 'INTERNAL_SERVER_ERROR', {"error": str(e)})
예제 #6
0
 def get(self, request, *args, **kwargs):
     """
     Return the list of categories
     :param request:
     :return:
     """
     try:
         is_all_category = request.GET.get('all', None)
         is_sub_category = request.GET.get('sub_category', None)
         if is_all_category:
             category_list = Category.objects.all()
         else:
             user = request.user
             user_type = user.user_type
             if user_type == User.WHOLESALER:
                 products = Product.objects.filter(wholesaler=user)
                 category_list = [product.sub_category.category for product in
                                  products]
                 category_list = set(category_list)
             else:
                 category_list = Category.objects.all()
         serializer = serializers.CategorySerializer(category_list, many=True, context={"user": request.user,
                                                                                        'is_sub_category': is_sub_category})
         return Utils.dispatch_success(request, serializer.data)
     except Exception as e:
         print(e)
         return Utils.dispatch_failure(request, 'INTERNAL_SERVER_ERROR', {"error": str(e)})
예제 #7
0
 def post(self, request):
     """
     Post the User email to verify the user exists or not
     :param request:
     :return:
     """
     return Utils.dispatch_failure(request, 'OBJECT_RESOURCE_NOT_FOUND') if User.objects.filter(
         username=request.data['username']) else Utils.dispatch_success(request, ["SUCCESS"])
예제 #8
0
    def get(self, request):
        """
        pagination added use - page_number = 1
        Page size is customizable - page_size = 10

        param = is_available = true

        :param request:
        :return:
        """
        try:
            if request.GET.get('is_available'):
                queryset = User.objects.filter(user_type=User.DELIVERY_MAN, is_available=True)
                return Utils.dispatch_success(request, serializers.BasicUserInfoSerializer(queryset, many=True).data)
            else:
                queryset = User.objects.filter(user_type=User.DELIVERY_MAN)
            page_size = request.GET.get('page_size')
            if page_size:
                page_size = int(page_size)
            else:
                page_size = 10

            page_number = request.GET.get('page_number')
            if page_number:
                page_number = int(page_number)
            else:
                page_number = 1

            if queryset:
                paginator = Paginator(queryset, per_page=page_size)

                queryset = paginator.page(page_number)

                serializer = serializers.UserManagementSerializer(queryset, many=True)
            response_data = {
                "data": serializer.data if queryset else [],
                "current_page": page_number,
                "page_size": page_size,
                "total_pages": paginator.num_pages if queryset else 1
            }
            return Utils.dispatch_success(request, response_data)

        except Exception as e:
            print(e)
            return Utils.dispatch_failure(request, 'INTERNAL_SERVER_ERROR', {"error": str(e)})
예제 #9
0
 def get(self, request, order_id):
     try:
         order_items = Order.objects.get(id=order_id)
         return Utils.dispatch_success(
             request,
             serializers.OrderSerializer(order_items).data)
     except Exception as e:
         print(e)
         return Utils.dispatch_failure(request, 'INTERNAL_SERVER_ERROR',
                                       {"error": str(e)})
예제 #10
0
 def get(self, request, referral_code):
     try:
         User.objects.get(referral_code=referral_code)
         return Utils.dispatch_success(request, 'SUCCESS')
     except User.DoesNotExist:
         return Utils.dispatch_failure(request, 'OBJECT_RESOURCE_NOT_FOUND')
     except Exception as e:
         print(e)
         return Utils.dispatch_failure(request, 'INTERNAL_SERVER_ERROR',
                                       {"error": str(e)})
예제 #11
0
    def get(self, request):
        """
        Returns the list of users
        :param request:
        :return:
        """
        try:
            user_type_list = request.GET.getlist('user_type', [])
            queryset = User.objects.filter(is_active=True)

            if user_type_list:
                queryset = queryset.filter(user_type__in=user_type_list).order_by('id')

            if queryset:
                serializer = serializers.BasicUserInfoSerializer(queryset, many=True)
                return Utils.dispatch_success(request, serializer.data)
            return Utils.dispatch_success(request, 'DATA_NOT_FOUND')
        except Exception as e:
            print(e)
            return Utils.dispatch_failure(request, 'INTERNAL_SERVER_ERROR', {"error": str(e)})
예제 #12
0
 def get(self, request):
     try:
         order_items = Order.objects.filter(
             customer=request.user).order_by('-order_time')
         return Utils.dispatch_success(
             request,
             serializers.OrderSerializer(order_items, many=True).data)
     except Exception as e:
         print(e)
         return Utils.dispatch_failure(request, 'INTERNAL_SERVER_ERROR',
                                       {"error": str(e)})
예제 #13
0
 def get(self, request):
     """
     Returns the list of users
     :param request:
     :return:
     """
     try:
         serializer = serializers.BasicUserInfoSerializer(request.user)
         return Utils.dispatch_success(request, serializer.data)
     except Exception as e:
         print(e)
         return Utils.dispatch_failure(request, 'INTERNAL_SERVER_ERROR', {"error": str(e)})
예제 #14
0
 def post(self, request):
     """
     {
     "address" : "ADDRESS",
     "delivery_time" : "4PM - 5PM",
     "pincode" : "PINCODE",
     "contact" : "98932782398",
     "contact_name" : "HJBGFHJSBJA",
     "delivery_charge": 50
     }
     :param request:
     :return:
     """
     try:
         cart_items = Cart.objects.filter(customer=request.user)
         today = datetime.date.today()
         order = Order(
             customer=request.user,
             order_id=
             f'ORDER{today.year}{int(today.month):02}{int(today.day):02}{Order.objects.all().count():07}',
             total_price=sum([
                 float(cart_item.product.sbs_price) *
                 float(cart_item.quantity) for cart_item in cart_items
             ]),
             total_item=len(cart_items),
             address=request.data['address'],
             delivery_time=request.data['delivery_time'],
             contact=request.data['contact'],
             contact_name=request.data['contact_name'],
             pincode=request.data['pincode'],
             delivery_charge=request.data['delivery_charge'])
         order.save()
         request.user.address = request.data['address']
         request.user.pincode = request.data['pincode']
         request.user.save()
         for cart_item in cart_items:
             ordered_product = OrderedProducts(
                 order=order,
                 product=cart_item.product,
                 quantity=cart_item.quantity,
                 price_per_item=cart_item.product.sbs_price,
                 image=cart_item.image,
                 total_price=float(cart_item.product.sbs_price) *
                 float(cart_item.quantity),
                 comments=cart_item.comments)
             ordered_product.save()
             cart_item.delete()
         return Utils.dispatch_success(request, 'SUCCESS')
     except Exception as e:
         print(e)
         return Utils.dispatch_failure(request, 'INTERNAL_SERVER_ERROR',
                                       {"error": str(e)})
예제 #15
0
 def get(self, request, order_id):
     """
     Provide Order ID to get Details
     :param request:
     :param order_id:
     :return:
     """
     try:
         order_item = Order.objects.get(id=order_id)
         return Utils.dispatch_success(request, OrderSerializer(order_item).data)
     except Exception as e:
         print(e)
         return Utils.dispatch_failure(request, 'INTERNAL_SERVER_ERROR', {"error": str(e)})
예제 #16
0
 def delete(self, request, cart_id):
     """
     :param request:
     :return:
     """
     try:
         cart = Cart.objects.filter(id=cart_id).first()
         if cart:
             cart.delete()
         return Utils.dispatch_success(request, 'SUCCESS')
     except Exception as e:
         print(e)
         return Utils.dispatch_failure(request, 'INTERNAL_SERVER_ERROR',
                                       {"error": str(e)})
예제 #17
0
 def get(self, request):
     """
     :param request:
     :return:
     """
     try:
         user = request.user
         return Utils.dispatch_success(
             request,
             serializers.DeliveryBoyDetailsSerializer(user).data)
     except Exception as e:
         print(e)
         return Utils.dispatch_failure(request, 'INTERNAL_SERVER_ERROR',
                                       {"error": str(e)})
예제 #18
0
 def get(self, request, *args, **kwargs):
     """
     Return the list of categories
     :param request:
     :return:
     """
     try:
         category_list = Category.objects.all()
         serializer = serializers.CustomerCategorySerializer(category_list,
                                                             many=True)
         return Utils.dispatch_success(request, serializer.data)
     except Exception as e:
         print(e)
         return Utils.dispatch_failure(request, 'INTERNAL_SERVER_ERROR',
                                       {"error": str(e)})
예제 #19
0
 def get(self, request, id):
     """
     Get particular store
     :param request:
     :param id:
     :return:
     """
     try:
         user = User.objects.get(id=id)
         return Utils.dispatch_success(request, serializers.BasicUserInfoSerializer(user).data)
     except User.DoesNotExist:
         return Utils.dispatch_failure(request, 'OBJECT_RESOURCE_NOT_FOUND')
     except Exception as e:
         print(e)
         return Utils.dispatch_failure(request, 'INTERNAL_SERVER_ERROR', {"error": str(e)})
예제 #20
0
    def get(self, request):
        """
        for pending Orders
        param = order_status=pending

        for order history
        no param

        pagination added use - page_number = 1
        Page size is customizable - page_size = 10

        :param request:
        :return:
        """
        try:
            if request.GET.get('order_status') == 'pending':
                queryset = Order.objects.filter(order_status=Order.PENDING).order_by('order_time')
            else:
                queryset = Order.objects.all().exclude(order_status=Order.PENDING).order_by('-order_time')
            page_size = request.GET.get('page_size')
            if page_size:
                page_size = int(page_size)
            else:
                page_size = 10

            page_number = request.GET.get('page_number')
            if page_number:
                page_number = int(page_number)
            else:
                page_number = 1

            if queryset:
                paginator = Paginator(queryset, per_page=page_size)

                queryset = paginator.page(page_number)

                serializer = OrderSerializer(queryset, many=True)
            response_data = {
                "data": serializer.data if queryset else [],
                "current_page": page_number,
                "page_size": page_size,
                "total_pages": paginator.num_pages if queryset else 1
            }
            return Utils.dispatch_success(request, response_data)

        except Exception as e:
            print(e)
            return Utils.dispatch_failure(request, 'INTERNAL_SERVER_ERROR', {"error": str(e)})
예제 #21
0
    def get(self, request, sub_category_id):
        """
        returns the list of products
        :param request:
        :param sub_category_id: sub_category_id
        :note:
        for recently added use -  recent=true query param
        pagination added use - page_number = 1
        Page size is customizable - page_size = 10
        :return:
        """
        try:
            if request.user.user_type == User.WHOLESALER:
                queryset = Product.objects.filter(sub_category=sub_category_id, wholesaler=request.user)
            else:
                if request.GET.get('recent', None):
                    queryset = Product.objects.filter(is_edited=True, is_drafted=False).order_by('-updated_at')
                else:
                    queryset = Product.objects.filter(sub_category=sub_category_id)
            page_size = request.GET.get('page_size', None)
            if page_size:
                page_size = int(page_size)
            else:
                page_size = 10

            page_number = request.GET.get('page_number', None)
            if page_number:
                page_number = int(page_number)
            else:
                page_number = 1

            if queryset:
                paginator = Paginator(queryset, per_page=page_size)

                queryset = paginator.page(page_number)

                serializer = serializers.ProductSerializer(queryset, many=True)
            response_data = {
                "data": serializer.data if queryset else [],
                "current_page": page_number,
                "page_size": page_size,
                "total_pages": paginator.num_pages if queryset else 1
            }
            return Utils.dispatch_success(request, response_data)

        except Exception as e:
            print(e)
            return Utils.dispatch_failure(request, 'INTERNAL_SERVER_ERROR', {"error": str(e)})
예제 #22
0
    def get(self, request):
        """
        pagination added use - page_number = 1
        Page size is customizable - page_size = 10
        -----------------------------------------------
        for Completed orders give param status=completed
        :param request:
        :return:
        """
        try:
            if request.GET.get('status') == 'completed':
                queryset = Order.objects.filter(delivery_boy=request.user,
                                                order_status=Order.DELIVERED)
            else:
                queryset = Order.objects.filter(
                    delivery_boy=request.user,
                    order_status__in=[Order.PACKED, Order.PICKUPED])

            page_size = request.GET.get('page_size', None)
            if page_size:
                page_size = int(page_size)
            else:
                page_size = 10

            page_number = request.GET.get('page_number', None)
            if page_number:
                page_number = int(page_number)
            else:
                page_number = 1

            if queryset:
                paginator = Paginator(queryset, per_page=page_size)

                queryset = paginator.page(page_number)

                serializer = OrderSerializer(queryset, many=True)
            response_data = {
                "data": serializer.data if queryset else [],
                "current_page": page_number,
                "page_size": page_size,
                "total_pages": paginator.num_pages if queryset else 1,
                "total": len(queryset)
            }
            return Utils.dispatch_success(request, response_data)
        except Exception as e:
            print(e)
            return Utils.dispatch_failure(request, 'INTERNAL_SERVER_ERROR',
                                          {"error": str(e)})
예제 #23
0
    def get(self, request):
        """
        returns the list all the  products based on queryset
        :param request:
        :note:

        pagination added use - page_number = 1
        Page size is customizable - page_size = 10
        :return:
        """
        try:
            queryset = Product.objects.filter(is_published=True)
            page_size = request.GET.get('page_size')
            if page_size:
                page_size = int(page_size)
            else:
                page_size = 10

            page_number = request.GET.get('page_number')
            if page_number:
                page_number = int(page_number)
            else:
                page_number = 1

            if queryset:
                paginator = Paginator(queryset, per_page=page_size)

                queryset = paginator.page(page_number)

                serializer = serializers.CustomerProductSerializer(queryset,
                                                                   many=True)
                data = serializer.data
                shuffle(data)
            else:
                data = []

            response_data = {
                "data": data,
                "current_page": page_number,
                "page_size": page_size,
                "total_pages": paginator.num_pages if queryset else 1
            }
            return Utils.dispatch_success(request, response_data)

        except Exception as e:
            print(e)
            return Utils.dispatch_failure(request, 'INTERNAL_SERVER_ERROR',
                                          {"error": str(e)})
예제 #24
0
 def get(self, request, product_id):
     """
     Returns a particular product based on sub_category id
     :param request:
     :param product_id: product_id
     :return:
     """
     try:
         product = Product.objects.get(id=product_id)
         serializer = serializers.ProductSerializer(product)
         return Utils.dispatch_success(request, serializer.data)
     except Product.DoesNotExist:
         return Utils.dispatch_failure(request, 'OBJECT_RESOURCE_NOT_FOUND')
     except Exception as e:
         print(e)
         return Utils.dispatch_failure(request, 'INTERNAL_SERVER_ERROR', {"error": str(e)})
예제 #25
0
 def delete(self, request, id):
     """
     Delete particular store
     :param request:
     :param id:
     :return:
     """
     try:
         user = User.objects.get(id=id)
         user.delete()
         return Utils.dispatch_success(request, "SUCCESS")
     except User.DoesNotExist:
         return Utils.dispatch_failure(request, 'OBJECT_RESOURCE_NOT_FOUND')
     except Exception as e:
         print(e)
         return Utils.dispatch_failure(request, 'INTERNAL_SERVER_ERROR', {"error": str(e)})
예제 #26
0
    def get(self, request):
        """

        :param request:
        :return:
        """
        try:
            queryset = SubCategory.objects.filter(
                is_fav=True).order_by('fav_order')
            return Utils.dispatch_success(
                request,
                serializers.FavoriteSerializer(queryset, many=True).data)
        except Exception as e:
            print(e)
            return Utils.dispatch_failure(request, 'INTERNAL_SERVER_ERROR',
                                          {"error": str(e)})
예제 #27
0
    def get(self, request):
        """
        returns the list all the  productsbased on queryset
        :param request:
        :note:
        for not published -  not_published=true query param
        for published -  published=true query param
        pagination added use - page_number = 1
        Page size is customizable - page_size = 10
        :return:
        """
        try:
            if request.GET.get('not_published'):
                queryset = Product.objects.filter(is_drafted=True, is_published=False).order_by('-updated_at')
            elif request.GET.get('published'):
                queryset = Product.objects.filter(is_published=True).order_by('-updated_at')
            else:
                queryset = Product.objects.all().order_by('-updated_at')
            page_size = request.GET.get('page_size')
            if page_size:
                page_size = int(page_size)
            else:
                page_size = 10

            page_number = request.GET.get('page_number')
            if page_number:
                page_number = int(page_number)
            else:
                page_number = 1

            if queryset:
                paginator = Paginator(queryset, per_page=page_size)

                queryset = paginator.page(page_number)

                serializer = serializers.ProductSerializer(queryset, many=True)
            response_data = {
                "data": serializer.data if queryset else [],
                "current_page": page_number,
                "page_size": page_size,
                "total_pages": paginator.num_pages if queryset else 1
            }
            return Utils.dispatch_success(request, response_data)

        except Exception as e:
            print(e)
            return Utils.dispatch_failure(request, 'INTERNAL_SERVER_ERROR', {"error": str(e)})
예제 #28
0
 def put(self, request):
     """
     To Update Buyed need to send response
     {
     "order_products" : [1,2,3,4,5,6,7,8,9,10]
     }
     note: These id's are ordered_products
     :param request:
     :return:
     """
     try:
         data = request.data
         OrderedProducts.objects.filter(id__in=data['order_products']).update(is_admin_buyed=True)
         return Utils.dispatch_success(request, 'SUCCESS')
     except Exception as e:
         print(e)
         return Utils.dispatch_failure(request, 'INTERNAL_SERVER_ERROR', {"error": str(e)})
예제 #29
0
    def get(self, request, *args, **kwargs):
        """
        :param request:
        :param args:
        :param kwargs:
        send ?text="searchtext" as param
        pagination added use - page_number = 1
        Page size is customizable - page_size = 10
        :return:
        """
        try:
            search = request.GET.get('text', '')
            queryset = Product.objects.filter(is_published=True,
                                              name__icontains=search)
            page_size = request.GET.get('page_size', None)
            if page_size:
                page_size = int(page_size)
            else:
                page_size = 10

            page_number = request.GET.get('page_number', None)
            if page_number:
                page_number = int(page_number)
            else:
                page_number = 1

            if queryset:
                paginator = Paginator(queryset, per_page=page_size)

                queryset = paginator.page(page_number)

                serializer = serializers.CustomerProductSerializer(queryset,
                                                                   many=True)
            response_data = {
                "data": serializer.data if queryset else [],
                "current_page": page_number,
                "page_size": page_size,
                "total_pages": paginator.num_pages if queryset else 1
            }
            return Utils.dispatch_success(request, response_data)
        except Exception as e:
            print(e)
            return Utils.dispatch_failure(request, 'INTERNAL_SERVER_ERROR',
                                          {"error": str(e)})
예제 #30
0
 def get(self, request):
     try:
         cart_items = Cart.objects.filter(customer=request.user)
         total = 0.0
         for cart_item in cart_items:
             total += float(cart_item.product.sbs_price) * float(
                 cart_item.quantity)
         delivery_charge = 50
         response_data = {
             "data": serializers.CartSerializer(cart_items, many=True).data,
             "delivery_charge": delivery_charge,
             "total": total,
             "total_with_delivery_charge": total + delivery_charge
         }
         return Utils.dispatch_success(request, response_data)
     except Exception as e:
         print(e)
         return Utils.dispatch_failure(request, 'INTERNAL_SERVER_ERROR',
                                       {"error": str(e)})